我尝试重新排列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 ")
3条答案
按热度按时间kgsdhlau1#
有几件事:之前的评论提到了这一点,但是你把标签Map到颜色,然后用缩放函数来填充。只要更改为
scale_color_discrete
即可。第二件事是您需要limits参数,而不是breaks参数。设置limits允许您定义包括哪些类别以及它们出现的顺序。您可以更改为
scale_color_discrete(limits = c("control", "1E-3","0.01", "0.1", "1", "10"))
或者,您可以使用有序因子,并根据需要排列该变量的水平。
forcats
包(tidyverse的一部分)中的fct_relevel
可以轻松地完成此操作,而无需手动给予所有水平。mznpcxlj2#
也许这个...
wqlqzqxt3#
仅更改图例
现在,我们似乎还可以通过添加一个
limits=
声明到我们的
scale_*_*()
。例如,
设置了我选择的颜色每个因素与
我可以强迫传奇的顺序改变,
比如说因子3然后因子1然后因子2
通过简单地将其更新为