You need to enable JavaScript to run this app. 如何使用ggplot2绘制与plotly效果一致的COVID-19分年龄组发病率多线图
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ggplot2绘制与plotly效果一致的COVID-19分年龄组发病率多线图

垂直连线问题的核心成因

整合后的数据集incidencia1中,每个流行病学周(epiweek)会对应多个不同年龄组的发病率值。如果在绘制折线时没有明确指定按年龄组拆分独立连线的规则,ggplot2会默认把同一x坐标下的所有数据点串联起来,最终生成突兀的垂直连线,完全偏离分年龄组绘制独立折线的预期效果。

复现plotly绘图效果的实现方法

只要在ggplot的基础美学映射中,把年龄分组变量同时映射为颜色和分组规则,让ggplot2识别出“同一年龄组下的点才需要按流行病学周的顺序串联成线”,再匹配对应的线条样式、配色、标题参数,就能和之前plotly绘制的效果完全对齐。

可直接运行的参考代码:

library(ggplot2)
ggplot(data = incidencia1,
       aes(
         x = epiweek,
         y = inc,
         colour = grupo_edad,
         group = grupo_edad # 关键参数:显式指定按年龄组拆分独立折线
       )) +
  # 绘制虚线,匹配原plotly的线条样式
  geom_line(linetype = "dashed", linewidth = 0.8) +
  # 手动匹配原plotly的配色方案
  scale_color_manual(
    values = c(
      "0 a 15" = "#16e3ff",
      "15 a 25" = "#00c9e4"
      # 其余年龄组的颜色映射可在此处补充
    )
  ) +
  # 匹配原plotly的标题、坐标轴标签内容
  labs(
    title = "Curvas de tasas de incidencia de casos notificados de COVID-19 \n en la Región Metropolitana, según grupo etario y semana epidemiológica primeros síntomas",
    x = "Semana Epidemiológica",
    y = "Tasa x 100.000 habitantes"
  ) +
  theme_minimal()
实操注意点
  • 虽然ggplot2对离散型颜色变量存在自动识别分组的逻辑,但遇到数据排序错位、存在缺失值的场景时,自动识别经常失效。显式书写group = grupo_edad是最稳妥的避免连线错乱的方式
  • 如果需要保留散点展示效果,可在geom_line()后叠加geom_point(size = 1.5),实现线点结合的展示样式
  • 若需要调整线条虚实、粗细,直接修改geom_line()中的linetype、linewidth参数即可,和plotly的线条参数逻辑基本一致

内容的提问来源于stack exchange,提问作者MARIO ANTONIO CASTILLO MACHUCA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 09:06:08