【发布时间】:2022-01-12 13:59:42
【问题描述】:
我使用 ggplot 绘制数百条模拟路径。数据已由 pivot_longer 组织,如下所示(200 条模拟路径,每条路径有 2520 个周期;首先是模拟 1,然后是模拟 2,依此类推,ind 显示每个周期的模拟值):
| sim | period | ind |
|---|---|---|
| 1 | 0 | 100.0 |
| 1 | 1 | 99.66 |
| . | . | . |
| 1 | 2520 | 103.11 |
| 2 | 0 | 100.0 |
| . | . | . |
| . | . | . |
| 200 | 0 | 100.0 |
| . | . | . |
| 200 | 2520 | 195.11 |
不确定使用 pivot_long 是否最佳,但至少以下 ggplot 看起来不错:
p<-ggplot(simdata, aes(x=period, y=ind,color=sim, group=sim))+geom_line()
用不同深浅的蓝色生成一个漂亮的图表。
我想做的是用不同的颜色(例如红色和绿色)为平均、中位数和四分位数路径着色。中位数、平均数和四分位数路径由上一周期的值定义。我已经知道这些的 sim 号码。例如。假设中间路径是 sim = 160 的路径。
我尝试了以下方法。
-
添加一个新的 geom_line 指定中间路径的编号(sim):
p + geom_line(aes(y = simdata[sim == 160,], color ="red")
这会失败,因为附加的 geom_line 与 simdata 的长度不同 (200*2520) - 即使图形的 x 轴只有 2520 个句点。
-
统计摘要
p + stat_summary(aes(group=sim),fun=median, geom="line",colour="red")
结果是所有行都被读取,模拟行也是如此。另外,我拒绝了这一点,因为让 ggplot 找到平均值、中位数等值需要更多时间,而不是在图形部分之前找到它们。
- gghighlight
我尝试了这个包,但不知道你是否可以指定路径号来着色。
【问题讨论】:
-
也许您可能不想绘制 200 条线,而是只绘制汇总统计信息(例如,一条线表示您的平均值),然后添加误差带(例如使用 geom_ribbon)
标签: r ggplot2 simulation