代码之家  ›  专栏  ›  技术社区  ›  SantiClaus

如何摆脱渐变,在ggplot中使用个别颜色?

  •  3
  • SantiClaus  · 技术社区  · 7 年前

    我的问题是我正在分组并分配给的变量 color 是一个连续变量(1:10的数字),因此颜色将是渐变。但我需要每组都是不同的颜色,而不是渐变色。我怎样才能做到这一点?代码和结果如下。日期变量也在下面。

    library(ggplot2)
    Date <- 
    c("12/31/2021", "12/31/2022", "12/31/2023", "12/31/2024", "12/31/2025", 
      "12/31/2026", "12/31/2027", "12/31/2028", "12/31/2029", "12/31/2030", 
      "12/31/2031", "12/31/2032")
    
    a <- data.frame(id = rep(c(1,2,3),4), date = Date, income = rnorm(12, 60000, 15000))
    a$date <- as.Date(a$date,"%m/%d/%Y")
    
    ggplot(a,aes(x = date,y = income,group = id, color = id)) +
      geom_line(size = 0.5)
    

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  1
  •   SeGa    7 年前

    如评论中所述,您可以使用 as.factor 在颜色参数中。

    定义可以使用的颜色 scale_colour_manual 或者自己指定颜色,或者使用 colorRampPalette 功能。

    ggplot(a,aes(x = date,y = income,group = id, color = as.factor(id))) +
      geom_line(size = 0.5)
    
    ggplot(a,aes(x = date,y = income,group = id, color = as.factor(id))) +
      scale_colour_manual(values=c("green","red","blue")) +
      geom_line(size = 0.5)
    
    gs.pal <- colorRampPalette(c("red", "blue"))
    
    ggplot(a,aes(x = date,y = income,group = id, color = as.factor(id))) +
      scale_colour_manual(values=gs.pal(length(unique(a$id)))) +
      geom_line(size = 0.5)
    
    推荐文章