我需要在pareto图表中添加一个垂直abline()。我正在使用ggplot2作为帕累托图

时间:2016-06-22 18:18:56

标签: r charts pareto-chart

我想在y是分位数的点处向Pareto图表添加垂直基线(参见下图)。我用于Pareto图表的函数是" qcc"中的pareto.chart()。包和ggplot2包。我只使用pareto.chart来获得累积的y。我之前也使用pareto.chart()制作了Pareto图表。如果你能用其中任何一个创建Pareto就没关系。

我主要担心的是如何在四分位线绘制垂直线。我能够在x轴的十分位线绘制垂直线,但不能在y轴的四分位线绘制。

这是功能:

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 enter image description here的某些十分位数或四分位数

2 个答案:

答案 0 :(得分:0)

+ geom_vline(xintercept = rev(stats[trunc(cumsum(xyz$Frequency)*.5) == 50, "x"])[1]

答案 1 :(得分:0)

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

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

例如:

segments(
         c(cat1,cat2),0,
         c(cat1,cat2),quantile(data, probs = seq(.5, .9)), 
         col = "red", 
         lty = "solid"
         )

其中cat1cat2是Pareto图表中与y轴概率相对应的两个类别。我需要使用一些数据来查看我是否能找到一种简单的方法将类别与y轴概率相关联,但是这种方法会绘制出你想要的线条。 (如果您想绘制水平或segments水平和垂直线segments的{​​{1}},也可以使用此方法。)