在metafor中为漏斗图点创建标签

时间:2014-04-23 14:03:07

标签: r plot labels

在{em> metafor 页面上查看funnel plot examples - 似乎有一种方法可以在漏斗图中添加标签。 funnel plot page提供了更多详细信息,但未列出添加标签的示例。

提供的示例:

library(metafor)
png(filename="contour_enhanced_funnel_plot.png",
    res=92, width=680, height=600, type="cairo")
par(mar=c(5,4,1,2))
data(dat.bcg)
res <- rma(ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg, measure="RR",
           slab=paste(author, year, sep=", "), method="REML")
funnel(res, level=c(90, 95, 99), shade=c("white", "gray", "darkgray"), refline=0)
dev.off()

包含标签字段,但示例中未生成任何标签字段。 如何在漏斗图中添加标签?

here,似乎使用pch可能是另一种选择。有点像:

pch=paste(StudyName, StudyMeasure, sep=", ")

但这只产生一个字母点。 。

1 个答案:

答案 0 :(得分:4)

在浏览rma()funnel.rma()的来源(来自metafor的1.9-2版本)时,我找不到任何具体的条款来将标签放入漏斗图中。但是,要绘制自己的标签,这些位置原则上可以从rma - 对象中重现,因此可以在不必重新计算所有内容的情况下构建这些数字。这种方法当然至少取决于yaxis - 参数的选定值,但默认情况下sqrt(vi) ~ yi似乎有效:

# ...
funnel(res, level=c(90, 95, 99), shade=c("white", "gray", "darkgray"), refline=0)
text(res$yi,sqrt(res$vi)+.016,res$slab,cex=.8)

有时,当重叠标签变得不可读时,图形外观当然会很糟糕。

或者你可能会尝试自己分配有意义的pch - 值(通常应该是整数),并尝试用图例解释这些:

alloc.factor <- factor(dat.bcg$alloc) 
stopifnot(res$k==length(alloc.factor))
funnel(res, level=c(90, 95, 99), shade=c("white", "gray", "darkgray"), refline=0,
    pch=as.numeric(alloc.factor),lwd=2,cex=1.6)
legend("topright",levels(alloc.factor),pch=1:3,pt.lwd=2,cex=1.6)