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

标签 r plot png

我对使用 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/

    相关文章:

    html - 有没有一种方法可以确保在 print 语句中使用 kable 表时 unicode 符号可见 - 当编织到 html 时

    plot - Tikzpicture - 绘图标签旁边/下方的箭头

    python - 使用 matplotlib 绘制 RGB 值

    php - 使用 PHP GD 展平多个透明 PNG

    android - 如何通过 Android 将 png 文件转换为 xml 资源?

    .net - 如何查看 'raw' PNG图像数据

    r - 来自 read.csv 的数据摘要的水平 xtable

    r - 在正则表达式 R 中编写特殊字符列表

    r - 通过替换双循环加快矩阵乘法

    linux - 是否有用于数据可视化和分析的命令行工具?