数据分析之帕累托(贡献度)分析(R语言)

帕累托分析又叫贡献度分析,原理是20/80定律,即80%的利润常常来自于20%的产品。

以某餐饮菜品的盈利数据为例:

1、导入数据

dishdata <- read.csv(file="catering_dish_profit.csv",header = T) #源数据是从大到小排序好的

导入后的数据如下图

2、绘制柱形图

barplot(dishdata[,3],col="blue",names.arg = dishdata[,2],width=1,space = 0,ylim=c(0,10000),xlab="菜品",ylab="盈利:元") #names.arg定义横轴标签值;space=0,使柱形的间距为0

3、绘制折线图

accratio = dishdata[,3] #选取作图的数据

for (i in 1:length(accratio)){
 accratio[i] = sum(dishdata[1:i,3])/sum(dishdata[,3])
 } #计算逐条累积的数值占总数的比例

par(new=TRUE,mar=c(4,4,4,4)) #new=TRUE,默认值为FALSE。如果设定为TRUE,那么下一个高级绘图命令并不会清空当前绘图设备;mar设置边界大小,默认是c(5,4,4,2)+0.1

points(accratio*10000~c(1:length(accratio)-0.5),type="b") #做出折线图

4、添加次坐标轴

axis(4,col="red",col.axis="red",at=0:10000,labels = c(0:10000/10000)) #col.axis设置坐标轴刻度文字的颜色;at设置绘制刻度线的位置;labels设置刻度线两旁的文字标签,如果为NULL,则直接使用at中的值

mtext("累积百分比",4,2) #在图形的边界添加文本,4表示右边,2为line属性,內移或外移文本

5、标注特定点

points(6.5,accratio[7]*10000,col="red") #将折线图上的 第七个点 标为红色

text(7,accratio[7]*10000,paste(round(accratio[7]+0.00001,4)*100,"%"),col="red") #text函数是在绘图区域内部添加文本

最终得到的帕累托图如下

 

扫描二维码关注公众号,回复: 2743913 查看本文章

猜你喜欢

转载自blog.csdn.net/zjlamp/article/details/81322278