我正在尝试根据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')),