7

我一直在使用 R 中 qcc 包中的 pareto.chart 函数,我非常喜欢它。现在我想移植我所有的图形来使用 ggplot2 包。然而,尽管有优秀的文档,但我对 ggplot2 的了解非常有限,所以我无法弄清楚所有细节。基本上我想要一个看起来像这样的情节

qcc包中的pareto.chart函数制作的一个简单的帕累托图

但用 ggplot2 包代替。下面列出了生成绘图的代码:

    library(qcc)
    defect <- c(80, 27, 66, 94, 33)
    names(defect) <- c("price code", "schedule date", "supplier code", "contact num.", "part num.")
    pareto.chart(defect, ylab = "Error frequency", col=heat.colors(length(defect)))

有人对此有解决方案吗?帕累托图之前已在此处讨论过,但结果看起来与我想要的并不相似。

4

1 回答 1

9

干得好:

library(ggplot2)

counts  <- c(80, 27, 66, 94, 33)
defects <- c("price code", "schedule date", "supplier code", "contact num.", "part num.")

dat <- data.frame(
  count = counts,
  defect = defects,
  stringsAsFactors=FALSE
)

dat <- dat[order(dat$count, decreasing=TRUE), ]
dat$defect <- factor(dat$defect, levels=dat$defect)
dat$cum <- cumsum(dat$count)
dat

ggplot(dat, aes(x=defect)) +
  geom_bar(aes(y=count), fill="blue", stat="identity") +
  geom_point(aes(y=cum)) +
  geom_path(aes(y=cum, group=1))

在此处输入图像描述

于 2012-04-13T10:51:55.693 回答