如何摆脱渐变并在ggplot中使用单独的颜色?

San*_*aus 6 r ggplot2

我的问题是我分组并分配给color的变量是一个连续变量(从 1:10 开始的数字),因此颜色将是渐变的。但是我需要每个组都是不同的颜色而不是渐变。我将如何实现这一目标?代码和结果如下。Date 变量也在下面。

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)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

SeG*_*eGa 5

正如评论中已经提到的,您可以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)
Run Code Online (Sandbox Code Playgroud)