R语言—帕累托图

本文的主要目的有两个一个是学习如何在R中绘制帕累托图,另一个是如何绘制双坐标图,其中前三个例子是用绘制双坐标的方式绘制帕累托图的,其余为直接生成的帕累托图


@ 不用包


par(mar=c(5,5,4,5)+0.1)
bar <- barplot(absolute,ylab="总数",col="skyblue",col.axis="skyblue",col.lab="skyblue")
mtext(LETTERS[1:8],side=1,line=1,at=bar,col="black")
#mtext(" ",side=1,line=3,col="black")
par(new=T)
plot(bar,cum_per,axes=F,xlab="",ylab="",col="red",type="b")
axis(4,col="red",col.ticks="red",col.axis="red")
mtext("累计百分比%",side=4,line=3,col="red")
title(main = '帕累托图')






@ plotix


library(plotrix)
type <- 1:8
absolute <- c(15,18,23,28,18,9,7,13)
cum_per <- cumsum(absolute)/sum(absolute)
twoord.plot(lx = type, ly = absolute, rx = type, ry = cum_per, type=c('bar','l'),
            lcol = 'skyblue', rcol = 'red', ylab = '总数',
            rylab = '累计百分比%', main = '帕累托图', xtickpos=type, 
            xticklab = LETTERS[1:8])


@ TeachingDemos包


par(mar=c(5,5,4,5)+0.1)
library(TeachingDemos)
bar <- barplot(absolute,ylab="总数",col="skyblue",col.axis="skyblue",col.lab="skyblue")
updateusr(1:2,range(min(absolute),max(absolute)),1:2,range(min(cum_per),
                                                          max(cum_per)))
lines(bar,cum_per,type="b",col="red")
axis(4,col="red",col.ticks="red",col.axis="red")
mtext("累计百分比%",side=4,line=3,col="red")
mtext(LETTERS[1:8],side=1,line=1,at=bar,col="black")
title(main = '帕累托图')



@ qcc包


library(qcc)
absolute <- c(15,18,23,28,18,9,7,13)
names(absolute) <- LETTERS[1:8]
pareto.chart(absolute, ylab = "总数",ylab2 = "累计百分比%",
             main='帕累托图')


@ qualityTools包


library(qualityTools)
#artifical defects dataset
absolute <- c(15,18,23,28,18,9,7,13)
names(absolute) <- LETTERS[1:8]
cum_per <- cumsum(absolute)/sum(absolute)
paretoChart(absolute,cum_per,main='帕累托图',ylab = "总数")



@ qicharts包


library(qicharts)
x <- rep(LETTERS[1:9], c(256, 128, 64, 32, 16, 8, 4, 2, 1))
paretochart(x)



@ fdth


library(fdth)
x <- rep(LETTERS[1:9], c(256, 128, 64, 32, 16, 8, 4, 2, 1))
dc <- fdt_cat(x)
plot(dc,type='pa',col=c('skyblue','red'))  



文章选摘:EasyCharts公众号


  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
R语言中,可以使用ggplot2包来绘制帕累托图。以下是一个简单的例子: 假设我们有一个数据框df,其中包含产品类别和每个类别的销售额。我们想要绘制一个帕累托图,显示每个类别的销售额占总销售额的比例。 首先,我们需要计算总销售额和每个类别的销售额占比。可以使用以下代码: ```{r} # 计算总销售额 total <- sum(df$sales) # 计算每个类别的销售额占比 df$percent <- df$sales / total df <- df[order(df$percent, decreasing = TRUE), ] df$cumulative <- cumsum(df$percent) ``` 这将在数据框中添加一个"percent"列和一个"cumulative"列,"percent"列包含每个类别的销售额占比,"cumulative"列包含每个类别的累计销售额占比。 接下来,我们可以使用ggplot2包绘制帕累托图。以下是绘制帕累托图的代码: ```{r} library(ggplot2) ggplot(df, aes(x=reorder(category,-percent), y=percent)) + geom_bar(stat="identity", fill="blue") + geom_line(aes(y=cumulative), color="red", group=1) + scale_y_continuous(labels = scales::percent_format()) + labs(title = "帕累托图", x = "类别", y = "销售额占比") + theme_classic() ``` 这将创建一个帕累托图,其中每个类别的销售额占比用蓝色柱状图表示,累计销售额占比用红色线条表示。图表还包括类别名称和销售额占比的标签。 注意,我们使用了reorder函数来按销售额占比对类别进行排序。这将确保帕累托图中的类别按从高到低的顺序排列。 帕累托图的输出结果如下图所示: ![帕累托图](https://i.imgur.com/7JDsHs8.png)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值