R语言 重新排序ggplot2中的图例

mm5n2pyu  于 2023-03-20  发布在  其他
关注(0)|答案(3)|浏览(244)

我尝试重新排列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 ")

kgsdhlau

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可以轻松地完成此操作,而无需手动给予所有水平。

mznpcxlj

mznpcxlj2#

也许这个...

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

wqlqzqxt3#

仅更改图例

现在,我们似乎还可以通过添加一个
limits=
声明到我们的scale_*_*()
例如,
设置了我选择的颜色每个因素与

scale_fill_manual(
                  values= c(
                        "factor1" = "#64af38", 
                        "factor2" = "#0051e8", 
                        "factor3" = "#cc6389"
                        )
                 )

我可以强迫传奇的顺序改变,
比如说因子3然后因子1然后因子2
通过简单地将其更新为

scale_fill_manual(
                  values= c(
                        "factor1" = "#64af38", 
                        "factor2" = "#0051e8", 
                        "factor3" = "#cc6389"
                        ),
                   limits= c(
                        "factor3", 
                        "factor1", 
                        "factor2"
                        )
                  )

相关问题