如何为ggplot2中多组geom_smooth自定义年份颜色?
为ggplot2中的每个年份单独设置自定义颜色
要给每个年份指定单独的颜色,核心是使用scale_color_manual()函数手动映射年份与颜色的对应关系。另外先修正你代码里的一处语法错误:geom_smooth的括号位置有误,需要调整。
步骤说明
- 确认目标年份:先查看你的
year_1999数据中包含的年份,运行以下代码获取唯一年份值:
unique(year_1999$year.x)
假设输出是1999, 2000, 2001, 2002, 2003, 2004,后续将针对这些年份设置颜色。
- 手动指定颜色映射:在ggplot代码末尾添加
scale_color_manual(),通过values参数为每个年份分配你想要的颜色(可以用颜色名称如"red"、"green",或十六进制颜色码如"#FF5733")。
修改后的完整代码
year_1999 <- subset(count_all, year.x <= 2004) first.plot <- ggplot(year_1999, aes(temperature, ENS, col = year.x)) + geom_point(shape = 17) + # 修正geom_smooth的括号错误 geom_smooth(aes(group = year.x), method = "loess", alpha = 0.1) + ylab("ENS") + xlab("Temperature [°C]") + ggtitle("1999-2004") + labs(color = "Year") + theme(plot.title = element_text(hjust = 0.5)) + theme(axis.title.y = element_text(size = 18, colour = "black", vjust = 0.7), axis.text.y = element_text(size = 12, face = "bold", colour = "black", angle = 0, hjust = 0.9)) + theme(axis.title.x = element_text(size = 18, colour = "black", vjust = 0.2), axis.text.x = element_text(size = 12, colour = "black", face = "bold")) + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) + theme(plot.margin = unit(c(0.2, 0.2, .2, 0.2), "cm")) + theme(panel.border = element_rect(colour = "black", size = 1.5)) + theme(axis.ticks = element_line(colour = "black", size = 1), axis.ticks.length = unit(0.3, "cm")) + # 手动指定每个年份的颜色,顺序要和unique(year_1999$year.x)的输出对应 scale_color_manual(values = c( "1999" = "#FF5733", "2000" = "#33FF57", "2001" = "#3357FF", "2002" = "#FF33A6", "2003" = "#FFC300", "2004" = "#8C7853" )) first.plot
注意事项
- 如果你的年份是数值型而非字符型,
scale_color_manual里的年份键可以不用加引号,比如1999 = "#FF5733"。 - 颜色值可以根据需求任意调整,可通过在线颜色工具获取心仪的十六进制颜色码。
内容的提问来源于stack exchange,提问作者lxrnax
相关产品推荐
相关产品推荐

