2

我想在 y 是分位数的点处向帕累托图添加一条垂直斜线(见下图)。我用于帕累托图的函数是“qcc”包和ggplot2包中的pareto.chart()。我只使用 pareto.chart 来获取累积 y。我之前也使用 pareto.chart() 制作了 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 的某个十分位或四分位数在此处输入图像描述

4

2 回答 2

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两个类别对应于 y 轴概率的位置和位置。我需要使用一些数据来查看是否可以找到一种简单的方法来将类别与 y 轴概率相关联,但是这种方法会画出你想要的线条。(如果您想绘制segments水平线或两组segments水平线和垂直线,此方法也可以使用。)

于 2016-11-11T06:15:27.263 回答
0
+ geom_vline(xintercept = rev(stats[trunc(cumsum(xyz$Frequency)*.5) == 50, "x"])[1]
于 2016-06-23T08:26:16.860 回答