如何修改metafor包森林图的点与置信区间分组颜色
问题原因
metafor包forest()函数的参数分工明确,你之前的写法踩了两个核心坑:
- 你传入颜色的
col参数,默认仅控制汇总结果多边形的颜色,不控制单个研究的点估计、置信区间须线的颜色 - 你直接按原始数据集顺序生成颜色向量,但代码里用了
order参数对研究做重排,就算传对了参数,颜色和分组也会错位。
单个研究的图形元素颜色,需要用两个独立参数控制:
col.obs:控制单研究点估计(方块/圆点)的填充色col.ci:控制单研究置信区间须线的颜色
修正代码
提前计算排序索引,按排序后的分组生成匹配的颜色向量,再分别传给对应参数即可:
# 提前计算排序索引,保证颜色顺序和绘图排列顺序完全一致 ord <- order(factor(dat$region4, levels = c("south","north islands", "central","north")), dat$target_status, dat$yi) # 按排序后的分组生成对应颜色:targeted组为红色,nontargeted组为蓝色 study_cols <- c("red", "blue")[match(dat$target_status[ord], c("targeted", "nontargeted"))] forest(res.overall, xlim = c(-8, 6), cex = 0.75, ylim = c(-3, 53), order = ord, rows = c(4:11,17:22,28:35,41:47), mlab = mlabfun("biomass overall", res.overall), slab = paste(dat$group), col = "grey30", # 单独设置汇总多边形的颜色,这里用深灰色 col.obs = study_cols, # 单研究点估计按分组上色 col.ci = study_cols, # 单研究置信区间按分组上色 # 如果需要点估计方块的边框和填充同色,再加下面这行 # border = study_cols, header = "Region | Monitoring Group")
可选调整
如果需要给不同分组的研究设置不同大小的点估计方块,可以给psize传入和分组匹配的数值向量,传参逻辑和颜色设置一致。
内容的提问来源于stack exchange,提问作者Joshua Smith
相关产品推荐
相关产品推荐

