控制 ggplot2图例显示顺序

有人知道如何控制 ggplot2中传说的排序吗?

从我看到的顺序出现与实际的比例标签相关,而不是比例声明顺序。更改刻度标题会改变排序。我用菱形数据集做了一个小例子来突出显示这一点。我试图使用 ggplot2来绘制一系列的图,我想让一个变量出现在所有图的右侧。目前,虽然这只发生在其中的一些,我不知道如何执行我想要的订单,同时保留适当的比例标签。

library(ggplot2)
diamond.data <- diamonds[sample(nrow(diamonds), 1000), ]
plot <- ggplot(diamond.data, aes(carat, price, colour = clarity, shape = cut)) +
geom_point() + opts(legend.position = "top", legend.box = "horizontal")
plot # the legend will appear shape then colour
plot + labs(colour = "A", shape = "B") # legend will be colour then shape
plot + labs(colour = "Clarity", shape = "Cut") # legend will be shape then colour
34324 次浏览

在我看来,图例的顺序是由比例名中的字符数决定的。(是的,我同意,这似乎很奇怪。)

所以,一个变通方法就是用空格填充你的标签:

plot + labs(colour = "Clarity", shape = "      Cut")

enter image description here


我真诚地希望有人发布一个适当的解决方案很快!

在0.9.1中,确定图例顺序的规则是 秘密不可预测。 现在,在 github 的 dev 版本0.9.2中,您可以使用这个参数来设置图例的顺序。

下面是一个例子:

plot <- ggplot(diamond.data, aes(carat, price, colour = clarity, shape = cut)) +
geom_point() + opts(legend.position = "top")


plot + guides(colour = guide_legend(order = 1),
shape = guide_legend(order = 2))

enter image description here

plot + guides(colour = guide_legend(order = 2),
shape = guide_legend(order = 1))

enter image description here