我一直在努力研究如何使用 ggplot2 包在 R 中制作帕累托图。在许多情况下,当制作条形图或直方图时,我们希望项目按 X 轴排序。在帕累托图中,我们希望项目按 Y 轴上的值降序排列。有没有办法让 ggplot 绘制按 Y 轴值排序的项目?我尝试先对数据框进行排序,但似乎 ggplot 重新排序了它们。
例子:
val <- read.csv("http://www.cerebralmastication.com/wp-content/uploads/2009/11/val.txt")
val<-with(val, val[order(-Value), ])
p <- ggplot(val)
p + geom_bar(aes(State, Value, fill=variable), stat = "identity", position="dodge") + scale_fill_brewer(palette = "Set1")
数据框 val 已排序,但输出如下所示:
(来源:脑咀嚼网)
Hadley 正确地指出,这会产生更好的图形来显示实际值与预测值:
ggplot(val, aes(State, Value)) + geom_bar(stat = "identity", subset = .(variable == "estimate"), fill = "grey70") + geom_crossbar(aes(ymin = Value, ymax = Value), subset = .(variable == "actual"))
返回:
(来源:脑咀嚼网)
但它仍然不是帕累托图。有小费吗?