You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为ggplot2中多组geom_smooth自定义年份颜色?

为ggplot2中的每个年份单独设置自定义颜色

要给每个年份指定单独的颜色,核心是使用scale_color_manual()函数手动映射年份与颜色的对应关系。另外先修正你代码里的一处语法错误:geom_smooth的括号位置有误,需要调整。

步骤说明

  1. 确认目标年份:先查看你的year_1999数据中包含的年份,运行以下代码获取唯一年份值:
unique(year_1999$year.x)

假设输出是1999, 2000, 2001, 2002, 2003, 2004,后续将针对这些年份设置颜色。

  1. 手动指定颜色映射:在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:35:31