在forestplot R中指定连续对数变换x轴的限制

时间:2018-02-23 14:47:53

标签: r forestplot

我正在尝试将数据绘制到具有对数变换的连续x轴的图形上。我的代码如下:

(forestplot的样本数据)

    tabletext <- cbind(c("Analysis","combined","A","B"),
    c("Observational","0.92 [0.87,0.96]","0.94 [0.89,1.01]","0.88 [0.82,0.95]"),
    c("MR","0.95 [0.92,0.98]","0.96 [0.92,1.00]","0.87 [0.78,0.97]")) 
    mean_mr <- c(NA,0.95,0.96,0.84)
    mean_obs <- c(NA,0.92,0.94,0.85)
    lower_mr <- c(NA,0.92,0.92,0.78)
    lower_obs <- c(NA,0.87,0.89,0.82) 
    upper_mr <- c(NA, 0.98,1.00,0.97)
    upper_obs <- c(NA,0.96,1.10,0.94)

    mean <- cbind(mean_obs,mean_mr)
    lower <- cbind(lower_obs,lower_mr)
    upper <- cbind(upper_obs,upper_mr)

生成森林地块:

    library(forestplot)

    forestplot(tabletext,mean,lower,upper,is.summary=c(TRUE,rep(FALSE,3)),
       boxsize=0.2,hrzl_lines=gpar(lwd=1,columns=1:4),xlog=1,
       col=fpColors(box=c("black"),line=c("black")),
       txt_gp = fpTxtGp(label = gpar(fontfamily = "",cex=1.1), 
       ticks=gpar(fontfamily="",cex=0.8),xlab  = gpar(fontfamily = "", cex = 1.1)))

我尝试使用xlim指定x轴限制,但这对绘图没有影响,xticks似乎覆盖了xlog参数。我还注意到,即使我删除了xlog参数,我也无法指定x轴限制。有没有什么方法可以在forestplot中的(对数转换的)比例上指定x轴限制?

2 个答案:

答案 0 :(得分:0)

你有哪个forestplot版本? 我在help page上找到了这个说明:

“注意:与原始林图的一个重要区别是,当前函数将xlog解释为x轴为日志格式,即您需要以antilog / exp格式提供数据。” 。根据我的理解,xlog只是将行绘制为1而不是0.

如果我用

运行你的例子
  forestplot(tabletext,mean,lower,upper,is.summary=c(TRUE,rep(FALSE,3)),
           boxsize=0.2,hrzl_lines=gpar(lwd=1,columns=1:4), xlog=1,
           col=fpColors(box=c("black"),line=c("black")),
           txt_gp = fpTxtGp(label = gpar(fontfamily = "",cex=1.1), 
                            ticks=gpar(fontfamily="",cex=0.8),xlab  = gpar(fontfamily = "", cex = 1.1)),
          xticks = c(0.4, 0.77, 0.9, 1)
          )

输出是 enter image description here

- &GT;限制被改变,以及xticks。

答案 1 :(得分:0)

似乎&#34; clip&#34;用于&#34;剪切置信区间到箭头的下限和上限&#34; (根据the forestplot package)。

您可以在代码中添加:clip(c(下限值,上限值))。 例如,在您的代码中,我将下限设置为0.8,将上限设置为1.2:

forestplot(tabletext,mean,lower,upper,is.summary=c(TRUE,rep(FALSE,3)), clip(c(0.8, 1.2))
       boxsize=0.2,hrzl_lines=gpar(lwd=1,columns=1:4),xlog=1,
       col=fpColors(box=c("black"),line=c("black")),
       txt_gp = fpTxtGp(label = gpar(fontfamily = "",cex=1.1), 
       ticks=gpar(fontfamily="",cex=0.8),xlab  = gpar(fontfamily = "", cex = 1.1)))

output plot image

奇怪的是,下限不会发生变化,但是上限得到了扩展,因此xticks不再覆盖xlog参数。希望这有效!