如何在森林图中添加文本

3
我正在尝试使用这个包含三列的数据框创建森林图:studies 是研究名称,n 是研究中样本数量,accuracy 是准确率(以百分比表示):
> dput(for.meta)
structure(list(studies = structure(c(11L, 5L, 13L, 3L, 14L, 12L, 
4L, 6L, 8L, 2L, 10L, 1L, 7L, 9L), .Label = c("EMTAB292", "GSE10327", 
"GSE12992", "GSE21140", "GSE30074", "GSE37382", "GSE41842", "GSE49243", 
"GSE50161", "GSE50765", "GSE62803", "GSE67850", "GSE73038", "GSE74195"
), class = "factor"), n = c(8L, 30L, 46L, 40L, 30L, 22L, 103L, 
50L, 58L, 62L, 12L, 19L, 19L, 24L), accuracy = c(85.71, 93.3, 
93.3, 94.9, 95, 95.5, 96.8, 97.8, 98.3, 98.3, 100, 100, 100, 
100), label = c("GSE62803 (n = 8)", "GSE30074 (n = 30)", "GSE73038 (n = 46)", 
"GSE12992 (n = 40)", "GSE74195 (n = 30)", "GSE67850 (n = 22)", 
"GSE21140 (n = 103)", "GSE37382 (n = 50)", "GSE49243 (n = 58)", 
"GSE10327 (n = 62)", "GSE50765 (n = 12)", "EMTAB292 (n = 19)", 
"GSE41842 (n = 19)", "GSE50161 (n = 24)")), row.names = c("GSE62803", 
"GSE30074", "GSE73038", "GSE12992", "GSE74195", "GSE67850", "GSE21140", 
"GSE37382", "GSE49243", "GSE10327", "GSE50765", "EMTAB292", "GSE41842", 
"GSE50161"), class = "data.frame")

这是创建森林图的代码:
library(metafor)
colfunc <- colorRampPalette(c("red", "darkred"))
metafor::forest(for.meta$accuracy, for.meta$n, 
                slab = for.meta$label, cex=.9,
                xlab = "Accuracy (%)", col = colfunc(14), 
                main = "Accuracy across 14 datasets\n(Median = 97.3%)", top = 3, refline = 97)
text(x = 70, y = 50, "Dataset", pos=4)
text(x = 90, y = 75, "Accuracy", pos = 3, font = 4)

情节已经创建,但数据集列和准确率列上方的标签没有显示出来。

enter image description here


似乎无法重现这个问题,一直出现错误,请提供一个完全可重现的示例。 - Foxhound
@Foxhound,我刚刚在一个全新的R会话中重新运行了这个代码,并成功地复现了问题。你是否将dput的结果赋值给了一个名为for.meta的变量? - Komal Rathi
啊,谢谢。@Wolfgang的回答很有效。 - Foxhound
1个回答

3

您添加的文本的y轴位置过高。应该这样操作:

metafor::forest(for.meta$accuracy, for.meta$n, 
                slab = for.meta$label, cex=.9,
                xlab = "Accuracy (%)",
                main = "Accuracy across 14 datasets\n(Median = 97.3%)", top = 3,
                refline = 97,
                xlim = c(30, 165))

text(x =  30, y = 16, "Dataset",  pos=4)
text(x = 165, y = 16, "Accuracy", pos = 2, font = 4)

请注意,我在森林图中设置了x轴的限制,这使得设置要添加的文本的相同限制变得更加容易。另外,我不得不删除col = colfunc(14)才能运行此操作。不确定该函数来自何处。

非常感谢!我编辑了我的问题,包括颜色的代码:colfunc <- colorRampPalette(c("red", "darkred")) - Komal Rathi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接