繁体   English   中英

如何在 R 中成功制作带有图例的轮廓增强漏斗 plot?

[英]How do I successfully make a contour-enhanced funnel plot with legend in R?

我正在尝试在 R 中创建一个轮廓增强漏斗 plot 以进行荟萃分析。 轮廓增强的漏斗 plot 还显示了 plot 对应于不同 p 值的区域(参见 Peters 等人,2008,轮廓增强的荟萃分析漏斗图有助于区分发表偏倚与其他不对称原因)。

I found this very useful guide to meta-analytic procedure online ( https://bookdown.org/MathiasHarrer/Doing_Meta_Analysis_in_R/smallstudyeffects.html ) suggesting the following code to create such a plot:

funnel(m.hksj, xlab="Hedges' g", 
       contour = c(.95,.975,.99),
       col.contour=c("darkblue","blue","lightblue"))+
legend(1.4, 0, c("p < 0.05", "p<0.025", "< 0.01"),bty = "n",
       fill=c("darkblue","blue","lightblue"))

执行此代码时,会生成 plot,但没有图例。 该错误表示二元运算符有一个非数字参数。 我还确保专门使用meta package 中的funnel() function,正如它在指南中所说的那样,因为在我的环境中也加载了metafor 有人知道如何解决这个问题并创造一个美好的传说吗?

另外,我尝试了metafor package ( http://www.metafor-project.org/doku.php/plots:contour_enhanced_funnel_plot ) 的创建者建议的以下代码:

funnel(res, level=c(.90, .95, .99),shade=c("white", "gray55", "gray75"), refline=0, legend=TRUE)

关于level参数有很多警告,它甚至没有产生工作漏斗 plot,更不用说有图例了。 在这种情况下,我假设这是由于我提交的不是 rma object,而是来自 meta package 的 meta object。 另一方面,它应该与上面的第一个代码一起工作,但事实并非如此。

感谢所有建议!

编辑:这是一个基于上述指南中提供的代码的示例

data = data.frame("Author" = c("Jones", "Goldman", "Townsend", "Martin", "Rose"),
                  "TE" = c(0.23, 0.56, 0.78, 0.23, 0.33),
                  "seTE" = c(0.324, 0.235, 0.394, 0.275, 0.348),
                  "subgroup" = c("one", "one", "two", "two", "three"))

m.data <- metagen(TE,
                  seTE,
                  data = data,
                  studlab = paste(Author),
                  comb.fixed = FALSE,
                  comb.random = TRUE,
                  method.tau = "SJ",
                  hakn = TRUE,
                  prediction = TRUE,
                  sm = "SMD")

funnel(m.data, xlab="Hedges' g", 
       contour = c(.95,.975,.99),
       col.contour=c("darkblue","blue","lightblue"))+
legend(1.4, 0, c("p < 0.05", "p<0.025", "< 0.01"),bty = "n",
       fill=c("darkblue","blue","lightblue"))

由于加号,您收到错误,并且图例未打印,因为坐标可能超出 plot 的范围。

尝试删除加号并更改图例的坐标,如下所示:

funnel(m.data, xlab="Hedges' g", 
           contour = c(.95,.975,.99),
           col.contour=c("darkblue","blue","lightblue"))
legend("topright", c("p < 0.05", "p<0.025", "< 0.01"),bty = "n",
           fill=c("darkblue","blue","lightblue"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM