如何在forestplot中为正负效应设置不同颜色:负效应方块及须设为红色
解决方案:根据估计值正负设置forestplot颜色
当然可行!我们可以通过为每个条目单独分配颜色的方式,让负估计值对应的方块和误差线显示为红色,正估计值保持深蓝色。下面是修改后的完整代码:
tabletext<-cbind( c("","Intervention","1", "2", "3", "4", "5", "6", "7", "Baseline (ref)"), c("","Predicted 95% CI","151 [128;175]", "146 [128;163]", "161 [144;179]","147 [130;164]", "137 [121;154]","141 [126;156]", "180[156;205 ]", "146 [129;162]"), c("","p-value", ".98",".99", ".060", ".99", ".61",".92",".0016","ref") ) data <- data.frame( coef=c(NA,NA,6.093, 0.060,16.01,1.142,-8.42,-4.58, 34.45,0), low=c(NA,NA,-12.4,-9.02,3.55,-9.82,-20.65,-15.16,15.97,0), high=c(NA,NA,24.62,9.14,28.464,12.11,3.80, 5.99, 52.92,0) ) # 根据估计值正负创建颜色向量:负的用红色,正的用深蓝色 box_colors <- ifelse(data$coef < 0, "red", "darkblue") box_colors[is.na(data$coef)] <- NA # 表头行无需颜色 line_colors <- box_colors # 误差线和方块使用相同颜色 forest<-forestplot( tabletext, upper = data$high, lower=data$low, mean = data$coef, zero = 0, boxsize = 0.2, cex=0.9, lineheight = "auto", title="TITLE", xlab = "Effect size 95% CI", vertices = TRUE, col=fpColors(box=box_colors, lines=line_colors, zero = "gray50"), txt_gp=fpTxtGp(label=gpar(cex=1), ticks=gpar(cex=1), xlab=gpar(cex = 1), title=gpar(cex = 1)) )
关键修改说明:
- 我们用
ifelse()函数生成了一个颜色向量box_colors,判断每个coef值是否小于0:如果是,就赋值为红色;否则保持深蓝色。 - 把表头对应的NA值也设为NA,这样forestplot不会给表头行绘制方块和误差线。
- 将颜色向量分别传给
fpColors()的box(方块颜色)和lines(误差线颜色)参数,替代原来的单一颜色设置。
这样运行代码后,因子5和6对应的方块及误差线就会显示为红色,其余正估计值的条目保持原有深蓝色样式。
内容的提问来源于stack exchange,提问作者User LG
相关产品推荐
相关产品推荐

