如何将流行病学SID模型ggplot折线图改为带状图?
将SID模型ggplot折线图改为带状图的实现方法
两种常见带状图的替换方案:
1. 填充式分组带状图(用geom_area)
适合展示各 compartment 随时间的数量分布,直接替换原代码的geom_line即可,可选择堆叠或分组展示:
ggplot(final_results_for_plotting) + # 替换geom_line为geom_area,新增fill映射控制填充色,保留colour做边框可选 geom_area(aes(x = time, y = number, fill = compartment, colour = compartment), alpha = 0.7, # 调透明度避免遮挡 position = "identity") # 取消堆叠,要堆叠就删掉这个参数 labs(x = "Time (days)", y = "Number of individuals", fill = "Model compartment", colour = "Model compartment")
2. 带上下限的置信带状图(用geom_ribbon)
如果你的数据包含每个时间点的数量波动范围(比如模拟的置信区间,需数据框有lower和upper列),可以用这种方式,通常会叠加折线做参考:
ggplot(final_results_for_plotting) + # 先画带状区间,再叠折线 geom_ribbon(aes(x = time, ymin = lower, ymax = upper, fill = compartment), alpha = 0.5) + geom_line(aes(x = time, y = number, colour = compartment)) + labs(x = "Time (days)", y = "Number of individuals", fill = "Model compartment", colour = "Model compartment")
核心调整说明
- 用
geom_area时:关键是在aes中添加fill映射,通过position控制是否堆叠,alpha调整填充透明度 - 用
geom_ribbon时:必须在aes中指定ymin和ymax,对应数据的上下限列 - 原代码的标签部分只需补充
fill对应的图例标签即可
内容的提问来源于stack exchange,提问作者user15950867
相关产品推荐
相关产品推荐

