[英]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_relevel
从forcats
包,tidyverse部分,可以很容易地做到这一点,而无需手动给所有的水平。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.