R 控制ggplot2图例显示顺序

R 控制ggplot2图例显示顺序,r,ggplot2,R,Ggplot2,有人知道我如何控制ggplot2中图例的顺序吗 从我看到的顺序与实际比例标签相关,而不是比例声明顺序。更改比例标题会更改顺序。我用diamond数据集做了一个小例子来强调这一点。我正在尝试将ggplot2用于一系列绘图,我想让一个变量显示在所有绘图的右侧。目前,虽然这种情况只发生在其中的一些地方,但我不知道如何在保留适当刻度标签的同时强制执行我想要的顺序 library(ggplot2) diamond.data <- diamonds[sample(nrow(diamonds), 100

有人知道我如何控制ggplot2中图例的顺序吗

从我看到的顺序与实际比例标签相关,而不是比例声明顺序。更改比例标题会更改顺序。我用diamond数据集做了一个小例子来强调这一点。我正在尝试将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
库(ggplot2)

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

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

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



我真诚地希望有人尽快发布一个合适的解决方案

在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))

如果我做了你所做的事情,我会得到清晰的图像,然后在我的图例中剪切(用空格填充)。packageDescription(“ggplot2”)$Version=0.9.1I应该明确指出,我实际上想要的是颜色,然后是形状(即清晰度,然后是切割),而不是切割,然后是清晰度,类似于您的示例。但是,我希望能够为缩放命名任何东西,并且仍然保持这种顺序。@Alastair现在很清楚,我的解决方案只适用于
ggplot2
0.9.0版-此解决方案不再适用于0.9.1版。因此,如果仍在使用0.9.0,则可以在字符串中填充空格,以获得所需的顺序。正如我所说的,这只是一个解决办法(而且保质期有限)。相关(尽管这个问题有更好的解决方案):
plot + guides(colour = guide_legend(order = 2), 
              shape = guide_legend(order = 1))