我正在尝试根据 pvalue 更改我的森林图中的置信区间线的颜色,以指示基于 95% CI 的统计显着性。我已经在 fpColors 中尝试过 ifelse 语句,但我还没有成功。
这些是我想要的颜色:
1 = SRR<1,pvalue<=0.05 = 绿色,
2 = SRR>1,pvalue<=0.05 = 红色,
3 = 否则颜色 = 灰色
这是我的代码:
tabletext <- cbind(c("name","\n",data1$name),
c("Observed","\n",data1$Count),
c("Predicted","\n",data1$Predicted),
c("SRR","\n",data1$SRR),
c("P value","\n",data1$pval) )
png(file.path("C:/R Work Folder\\forestplot4"), width =960 ,height=1584)
forestplot(labeltext=tabletext, graph.pos=7,
mean=c(NA,NA,data1$SIR),
lower=c(NA,NA,data1$CIlow), upper=c(NA,NA,data1$CIhigh),
title="Standardized Ratio",
xlab=" <--- Better--- ---Worse--->",
#hrzl_lines= gpar(odd, lwd=1, col="#99999922"),
txt_gp=fpTxtGp(label=gpar(cex=1.25),
ticks=gpar(cex=1.1),
xlab=gpar(cex = 1.2),
title=gpar(cex = 1.2)),
col=fpColors( box="black",zero="gray50", lines="black"),
zero=1, cex=0.9, lineheight = "auto", boxsize=0.4,
colgap=unit(5,"mm"), lwd.ci=2, ci.vertices=TRUE, ci.vertices.height = 0.4)
dev.off()
我找到了另一种方法的示例,其中有人为颜色编写了一个函数。但我不能让它在 fpColors 中工作并且不想要 colorRamp,我只想要绿色、红色和灰色线。
fn<-local({
i=0
no_lines<-sum(!is.na(data1$SIR))
bclrs=colorRampPalette(colors=c("black"))(no_lines)
lclrs=colorRampPalette(colors=c("green", "red"))(no_lines)
function(...,clr.line, clr.marker){
i<<-i+1
fpDrawNormalCI(...,clr.line=lclrs[i],clr.marker=bclrs[i])}
})
forestplot(labeltext=tabletext, fn.ci_norm=fn,
data1, new_page=TRUE,
is.summary=c(TRUE, TRUE, rep(FALSE,94)),
clip=c(0.1,2.5),
col=fpColors(summary="black"))
我也试过这个,看看我是否可以让前 5 个地块变成红色,其余的都变成黑色。但一切都变成了红色。
col=fpColors( lines =c(rep('red', 5),'black')),