1

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

0 回答 0