首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要在pareto图中添加一个垂直斜线()。我使用的是帕累托图的ggplot2

我需要在pareto图中添加一个垂直斜线()。我使用的是帕累托图的ggplot2
EN

Stack Overflow用户
提问于 2016-06-23 02:18:56
回答 2查看 326关注 0票数 2

我想在Pareto图中y是分位数的点处添加一条垂直斜线(见下图)。我在帕累托图中使用的函数是"qcc“包和ggplot2包中的pareto.chart()。我只是使用pareto.chart来获得累积y。我还在前面使用pareto.chart()制作了帕累托图。如果您可以使用这两种方法中的任何一种来创建Pareto,那就没问题了。

我主要关心的是如何在四分位数上绘制垂直线。我可以在x轴的分位数上画垂直线,但不能在y轴的四分位数上画垂直线。

下面是函数:

代码语言:javascript
复制
xyz<-pareto.chart(Product, ylab = "Number of Products", xlab="Customer", xaxt="n")
xyz<-data.frame(xyz)

i2<-ggplot(data=xyz, 
           aes(x=seq(1,length(xyz$Frequency)),y=Cum.Percent.,group=1)) + 
    geom_line(colour="red", size=1) + 
    theme_classic() + 
    theme(axis.text.x = element_text(angle = 75, hjust = 1, size=8)) +
    labs(x="Customer",y="Product Share (%)") +
    ggtitle("Pareto Chart") +
    ylim(0,100.1)

print(i2)

该图显示了它是如何实现的,以及我想要实现的方式。基本上,我想要50%和90%的红线,或者是Y的十分之一或四分位数

EN

回答 2

Stack Overflow用户

发布于 2016-06-23 16:26:17

代码语言:javascript
复制
+ geom_vline(xintercept = rev(stats[trunc(cumsum(xyz$Frequency)*.5) == 50, "x"])[1]
票数 0
EN

Stack Overflow用户

发布于 2016-11-11 14:15:27

我会使用segments命令。它独立于其他两个包,因此该方法无论如何都可以工作。

基本前提是确定要绘制的x,y点(或数组)和要绘制的x,y点(或数组)。

例如:

代码语言:javascript
复制
segments(
         c(cat1,cat2),0,
         c(cat1,cat2),quantile(data, probs = seq(.5, .9)), 
         col = "red", 
         lty = "solid"
         )

其中,cat1cat2是您在帕累托图中的两个类别,它们对应于y轴概率。我需要处理一些数据,看看是否可以找到一种简单的方法来将类别与y轴概率关联起来,但这种方法会画出您想要的线。(如果您希望绘制水平线或水平线和垂直线的两组segments,则此方法也适用。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37975540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档