gpt4 book ai didi

r - 将文本与 R 中可变大小的图对齐

转载 作者:行者123 更新时间:2023-12-04 12:16:53 24 4
gpt4 key购买 nike

我对使用 R 的强大功能来创建图形输出非常陌生。

我使用 metafor-package 中的 forest() 函数来创建我的元分析的森林图。我使用循环生成几个图,然后通过 png() 保存它们。

for (i in 1:ncol(df)-2)){
dat <- escalc(measure="COR", ri=ri, ni=ni, data=df) # Calcultes Effect Size
res_re <- rma.uni(yi, vi, data=dat, method="DL", slab=paste(author)) # Output of meta-analysis

png(filename=path, width=8.27, height=11.69, units ="in", res = 210)
forest(res_re, showweight = T, addfit= T, cex = .9)
text(-1.6, 18, "Author(s) (Year)", pos=4)
text( 1.6, 18, "Correlation [95% CI]", pos=2)
dev.off()
}

如果绘图的大小相等,这很有效。但是,循环的每次迭代都会在森林图中集成不同数量的研究。因此,文本元素不在正确的位置,具有许多研究的森林图看起来有点奇怪。我有两个问题:
  • 如何自动将“作者(年份)”和“相关性 [95%CI]”与森林图的大小变化自动对齐,以使标题位于森林表的上线上方?
  • 如何缩放森林图的大小,以便所有图的文本元素的宽度和大小都相同,并且对于每个额外的研究,只会添加一条新线(改变高度)?

  • 每个森林图应如下所示:

    enter image description here

    最佳答案

    要使其正常工作,您必须执行以下操作:

  • 我会修复 xlim跨图,以便有一个固定的位置来放置“作者(年份)”和“相关性 [95%CI]”标题。生成森林图后,查看 par()$usr[1:2] .使用这些值作为调整的起点 xlim以便它适合您的所有情节。然后将这两个值用于对 text() 的两次调用。 .
  • k每个图中的行。标题应该在上面两行。所以,使用 text(<first xlim value>, res_re$k+2, "Author(s) (Year)", pos=4)text(<second xlim value>, res_re$k+2, "Correlation [95% CI]", pos=2)
  • 套装cextext()到您在调用 forest() 时指定的相同值.
  • 最后一部分很棘手。您已修复 cex ,因此文本元素的大小在各个图中应该相同。但如果有更多的研究,那么 k行被塞进更少的空间,所以它们变得不那么分开。如果我理解正确,您希望通过调整绘图的实际高度来保持绘图之间的行间距相等。本质上,这需要制作 height在调用 png() k的函数.对于每个额外的研究,需要将额外的金额添加到 height以便行间距保持不变,所以沿着 height=<some factor> + res_re$k * <some factor> .但是高度的增加是k的函数也可能是非线性的。做到这一点需要大量的尝试和错误。可能有一种以编程方式确定这一点的聪明方法(深入研究 ?par?strheight )。

  • 所以让别人更容易插话,你问题的最后一部分归结为:我如何调整 height绘图设备的值,以便 plot(1:10) 中的行之间的绝对间距和 plot(1:20)保持平等?这本身就是一个有趣的问题,所以我将把它作为一个单独的问题发布。

    关于r - 将文本与 R 中可变大小的图对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25565817/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com