【问题标题】:I need to add a vertical abline() to a pareto chart. I am using ggplot2 for pareto chart我需要将垂直 abline() 添加到帕累托图。我正在将 ggplot2 用于帕累托图
【发布时间】:2016-06-22 18:18:55
【问题描述】:

我想在 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 的某个等分位或四分位

【问题讨论】:

    标签: r charts pareto-chart


    【解决方案1】:
    + geom_vline(xintercept = rev(stats[trunc(cumsum(xyz$Frequency)*.5) == 50, "x"])[1]
    

    【讨论】:

    • 它创建了一条 x=0.5 的垂直线,但是我想要一条 y=50% 的线
    • 感谢 mate.w 但它仍然在同一个地方绘制。我不知道如何
    • 试试 geom_hline()。
    • 我尝试了 hline y intercept 它绘制在 x 轴下方,也尝试了 hline x intercept 它绘制了相同的。我的感觉是,因为我必须在图中的任何位置绘制 50%,x 截距将保持不变。但是为此,如何在 y 获得 50% 的值时找到 x 截距。反函数会很繁琐。
    • 我无法运行它,但我认为我们在这里得到了我已经知道的 y 值。我想得到 y=50% 的 x 值
    【解决方案2】:

    我会使用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,此方法也可以使用。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      相关资源
      最近更新 更多