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

如何在ggplot中优化线条区分度以适配视障用户?

优化时间序列图表辨识度的解决方案

针对色盲及视野盲区人群的需求,我们可以通过多重差异化特征组合来提升图表可读性,核心优化点和修改后的代码如下:

关键优化措施

  • 给每个数据系列分配独特的标记形状(如圆形、三角形、方形),弥补线条样式相似的问题
  • 使用色盲友好型配色方案,避免红绿等高对比度但色盲难区分的颜色组合
  • 同时结合线条样式、颜色、标记三种特征,让每个系列具备独有的识别点
  • 加粗实际数据的线条,突出核心观测值,和预测模型区分开
  • 统一图例,把所有系列整合到同一区域,减少视觉分散

修改后的完整代码

library(feasts)
library(fable)
library(ggplot2)
library(tsibble)
library(dplyr)

tmp <- data.frame(
  Month = c(1,2,3,4,5,6,7,8,9,10),
  StateX = c(1527,1297,933,832,701,488,424,353,302,280)
) %>%
  as_tsibble(index = Month)
tmpNext4 <- data.frame(
  Month = c(11,12,13,14),
  StateX = c(211,182,153,125)
) %>%
  as_tsibble(index = Month)

# Fit the models to tmp dataframe:
fit <- tmp %>%
  model(
    Mean = MEAN(StateX),
    `Naïve` = NAIVE(StateX),
    Drift = NAIVE(StateX ~ drift())
  )

# Produce forecasts for the next 4 months:
fcTmp <- fit %>%
  forecast(new_data = tmpNext4)

# 整合实际数据与预测数据,方便统一绘图
actual_data <- bind_rows(
  tmp %>% mutate(.model = "Actual", value = StateX),
  tmpNext4 %>% mutate(.model = "Actual", value = StateX)
)
forecast_data <- fcTmp %>% mutate(value = .mean)

# 合并所有数据
all_data <- bind_rows(actual_data, forecast_data)

# Plot the forecasts with enhanced accessibility:
all_data %>%
  ggplot(aes(Month, value)) +
  # 绘制线条:每个系列对应独特颜色、线型,实际数据加粗
  geom_line(aes(color = .model, linetype = .model, group = .model), 
            linewidth = ifelse(all_data$.model == "Actual", 1.2, 0.8)) +
  # 绘制标记点:每个系列对应独特形状
  geom_point(aes(color = .model, shape = .model, group = .model), size = 2.5) +
  # 色盲友好配色
  scale_color_viridis_d(option = "plasma") +
  # 自定义标记形状
  scale_shape_manual(values = c("Actual" = 16, "Mean" = 17, "Naïve" = 15, "Drift" = 18)) +
  # 自定义线型
  scale_linetype_manual(values = c("Actual" = "solid", "Mean" = "dashed", "Naïve" = "dotted", "Drift" = "dotdash")) +
  labs(title = "StateX 时间序列预测", x = "月份", y = "StateX 值") +
  theme_minimal()

代码说明

  1. 数据整合:把实际数据(历史+未来观测)和预测数据合并成一个数据集,方便统一映射美学特征,避免多次调用geom_line导致图例分散
  2. 多重差异化映射:每个.model系列同时绑定color、linetype、shape,三重特征确保即使某一种特征难以区分,还有其他特征辅助识别
  3. 色盲友好配色:scale_color_viridis_d()提供的配色经过色盲测试,能被绝大多数色盲人群清晰区分
  4. 线条粗细区分:实际数据线条加粗,预测模型线条稍细,突出核心观测数据
  5. 自定义标记与线型:手动指定每个系列的标记形状和线型,确保差异足够明显

内容的提问来源于stack exchange,提问作者Village.Idyot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:25:32