繁体   English   中英

在ggplot2中重新排序图例

[英]re-ordering legend in ggplot2

我试图在ggplot中重新排列我的图例,以便首先列出“控件”,然后将浓度从低到高排列。 我都按照我希望的图例顺序排列了数据集,并尝试了scale_fill_discrete。

您能发现任何不起作用的原因吗?

p <- ggplot(data = deviation_cloth, aes(x = day, y = Deviation))+
  geom_line(aes(color = factor(Labels)), size = 1)+
  scale_fill_discrete(breaks = c("control", "1E-3","0.01", "0.1", "1", "10"))

p + labs(color = "Conc", x = "Day", y = "Result ")

在此处输入图片说明

也许这...

library(tidyverse)

df <-
  data_frame(
    x = c(1, 2, 3, 1, 2, 3, 1, 2, 3),
    y = c(2, 3, 4, 3, 4, 5, 4, 5, 6),
    z = c("a", "a", "a", "b", "b", "b", "c", "c", "c")
  )

ggplot(df, aes(x, y, colour = z)) +
  geom_line()

ggplot(df, aes(x, y, colour = z)) +
  geom_line() +
  guides(colour = guide_legend(reverse = T))

有两件事:前面提到的注释是这样,但是您将Labels映射为color,但是随后使用了scale函数进行填充。 因为是一条线,所以颜色是有意义的。 只需更改为scale_color_discrete

第二件事是您要使用极限参数,而不是打破极限。 设置限制可让您定义要包含的类别以及它们的显示顺序。您可以更改为scale_color_discrete(limits = c("control", "1E-3","0.01", "0.1", "1", "10"))

或者,您可以使用有序因子并根据需要安排该变量的级别。 fct_relevelforcats包,tidyverse部分,可以很容易地做到这一点,而无需手动给所有的水平。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM