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

基于FakeDATE数据的同比折线图制作:高亮指定年份并设置配色

实现动态年份配色的同比折线图

针对你需要的「所有年份数据设为灰色,仅指定年份为蓝色,且年份数量不固定」的需求,这里提供基于ggplot2的实现方案,适配任意数量的年份:

核心思路

通过动态生成颜色映射规则,自动识别数据中的所有年份,默认设为灰色,仅将指定年份替换为蓝色,无需硬编码每一个年份。

代码示例

假设你的数据框df包含date(日期列)和value(观测数值列):

library(ggplot2)
library(lubridate)

# 1. 从日期中提取年份
df$year <- lubridate::year(df$date)

# 2. 定义需要高亮的目标年份(支持单个或多个年份)
target_years <- 2024  # 若要高亮多个年份,改为 c(2023, 2024)

# 3. 绘制折线图并设置动态配色
ggplot(df, aes(x = lubridate::yday(date), y = value, color = factor(year))) +
  geom_line(linewidth = 1) +
  # 动态生成颜色:目标年份用蓝色,其余用灰色
  scale_color_manual(
    values = sapply(unique(df$year), function(y) {
      if (y %in% target_years) "#1f77b4" else "#999999"
    }),
    name = "年份"
  ) +
  labs(x = "一年中的天数", y = "数值") +
  theme_minimal()

说明

  • 不管数据中包含多少个年份,sapply会自动遍历所有唯一年份,匹配目标年份后设置蓝色,其余统一为灰色
  • 如果需要调整颜色,替换#1f77b4(蓝色)和#999999(灰色)为你需要的十六进制颜色码即可
  • 如果你的数据已经按照原方案完成了日期对齐(比如将不同年份的日期映射到同一年的对应天数),直接套用上述配色逻辑即可

内容的提问来源于stack exchange,提问作者GrBa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 23:47:25