【问题标题】:ggplot2: Why is color order of geom_line() graphs reversed?ggplot2:为什么 geom_line() 图形的颜色顺序颠倒了?
【发布时间】:2017-09-24 17:50:12
【问题描述】:

下面的代码绘制了一个图表,其中颜色的名称以正确的顺序出现在图例中,但颜色本身以相反的顺序出现。为什么?

year <- 2000:2009
a1 <- 4 + rnorm(10)
a2 <- 3 + rnorm(10)
a3 <- 2 + rnorm(10)
a4 <- 0.25 * rnorm(10)
vv <- tibble(year, a1, a2, a3, a4)

test <- ggplot(data=vv) + aes(x=year) + 
  geom_line(aes(y = a1, colour= "blue")) + 
  geom_line(aes(y = a2, colour= "green")) + 
  geom_line(aes(y = a3, colour= "yellow")) + 
  geom_line(aes(y = a4, colour= "orange")) +
  expand_limits(y=0)

test

【问题讨论】:

    标签: r ggplot2 graph colors


    【解决方案1】:

    这里有一些提示要提及。

    首先,ggplot 将 aes() 中命名的颜色读取为按字母顺序排列的因子,而不是颜色名称,如果您不列出按上述顺序着色。例如,ggplot2 包会将“蓝色”、“绿色”、“黄色”、“橙色”解释为“蓝色”、“绿色”、“橙色”、“黄色”。除了此顺序更改之外,它不会使用您以这种方式提供的值作为绘图的颜色;它使用默认颜色。

    您可以采取一些措施来解决这个问题。一种方法是使用 scale_colour_manual 来阐明颜色的特定顺序和值,如下所示:

    ggplot(data=vv) + aes(x=year) + 
      geom_line(aes(y = a1, colour= "blue")) + 
      geom_line(aes(y = a2, colour= "green")) + 
      geom_line(aes(y = a3, colour= "yellow")) + 
      geom_line(aes(y = a4, colour= "orange")) +
      scale_colour_manual(values=c("blue"="blue","green"="green",
                                   "yellow"="yellow","orange"="orange"),
                          breaks=c("blue","green","yellow","orange")) +
      scale_x_continuous(breaks=seq(2000, 2009, 3)) +
      expand_limits(y=0)
    

    输出:

    如果您不需要图例,您也可以将颜色参数放在 aes() 之外,正如 @tekrei 解释的那样。对于其他自定义选项,请尝试 ?scale_colour_manual 以获得更多帮助。

    【讨论】:

      【解决方案2】:

      我认为您可以将colour 移出aes 以显示正确的线条颜色:

      test <- ggplot(data=vv) + aes(x=year) + 
              geom_line(aes(y = a1), colour="blue") + 
              geom_line(aes(y = a2), colour="green") + 
              geom_line(aes(y = a3), colour="yellow") + 
              geom_line(aes(y = a4), colour="orange") +
              expand_limits(y=0)
      

      您可以check this answer

      aes 中的colour 不直接定义线条的颜色,而是通过将定义的值作为一个因素将颜色映射到数据。因此,当您将colour 的值设置为red 时,它将名称red 映射到线条的颜色并在图例中显示为这样。它不会将其视为文字颜色。但在aes 之外,它会将其视为实际颜色。也可以查看this answer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-10
        • 2011-07-11
        相关资源
        最近更新 更多