79

有谁知道我如何控制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
4

2 回答 2

130

在 0.9.1 中,确定图例顺序的规则是秘密不可预测的。现在,在 github 的 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))

在此处输入图像描述

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

在此处输入图像描述

于 2012-07-09T15:14:00.263 回答
13

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

因此,一种解决方法是用空格填充标签:

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

在此处输入图像描述


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

于 2012-07-09T10:34:31.913 回答