Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文本块添加到R中的合成图中_R - Fatal编程技术网

将文本块添加到R中的合成图中

将文本块添加到R中的合成图中,r,R,我在R中生成一个组合图,我将其设置为2x2。对于这些图,我有3个方框图,希望最后一个象限包含一些关于这些图的描述性文本。通过谷歌搜索,我使用plot.new()创建了一个空绘图,然后使用plotrix软件包,该软件包允许我构建一个表并将其放入图形中。下面是一个示例,以及一些伪代码。伪代码中的数据和实际数字是不相关的——只是占位符,以达到我想要达到的目的 问题是,这不是很有吸引力,我找不到任何其他方法来创建一个文本块来占据最后一个象限。我已经尝试更改表格的x和y坐标,但这不起作用,因为从技术上讲,

我在R中生成一个组合图,我将其设置为2x2。对于这些图,我有3个方框图,希望最后一个象限包含一些关于这些图的描述性文本。通过谷歌搜索,我使用plot.new()创建了一个空绘图,然后使用plotrix软件包,该软件包允许我构建一个表并将其放入图形中。下面是一个示例,以及一些伪代码。伪代码中的数据和实际数字是不相关的——只是占位符,以达到我想要达到的目的

问题是,这不是很有吸引力,我找不到任何其他方法来创建一个文本块来占据最后一个象限。我已经尝试更改表格的x和y坐标,但这不起作用,因为从技术上讲,除了0,0之外,空绘图中没有其他坐标。我也尝试过用cex=###增加字体大小,但这只会使行连成一行

任何提示都将不胜感激

library('beeswarm')
library('plotrix')

d = data.frame('study' = c(rep('study1',25),rep('study2',25)))
d$res1 = c(rnorm(25,40,5),rnorm(25,50,10))
d$category = c(rep('yes',12),rep('no',13),rep('yes',13),rep('no',12))
opar = par(mfrow=c(2,2))

rng = range(d$res)
study1 = which(d$study == 'study1')

boxplot(d$res1[study1]~d$category[study1], pch=19, lwd=2, cex=1.5, outline=F, ylim=rng, main='Study 1')
beeswarm(d$res1[study1]~d$category[study1], pch=19, cex=1.5, col=c('red','blue'), add=T)

boxplot(d$res1[-study1]~d$category[-study1], pch=19, lwd=2, cex=1.5, outline=F, ylim=rng, main='Study 2')
beeswarm(d$res1[-study1]~d$category[-study1], pch=19, cex=1.5, col=c('red','blue'), add=T)

shps = rep(17,length(d$study))
shps[study1] = 19
boxplot(d$res1~d$category, pch=46, lwd=2, cex=1.5, outline=F, ylim=rng, main='Combined')
beeswarm(d$res1~d$category, pch=46, cex=1.5, col=c('red','blue'), add=T, pwpch=shps)
legend('topright',c('Study 1','Study 2'), pch=c(19,17), pt.cex=1.5)

plot.new()
tbldf = data.frame('p-value' =    c(0.33,0.40,0.85),
               'FDR' = c(0.84, 0.96, 0.97))
rownames(tbldf) = c('Study 1', 'Study 2', 'Combined')
addtable2plot(0, 0, tbldf, bty = "o", display.rownames = TRUE, 
          title = sprintf('Analyte'), vlines=T, cex=1.25)
par(opar)
我得到的是这样的东西:

我想要的是更像这样的——这张桌子仍然有点“无聊”,但足够了。欢迎任何改进:


因此,如果这还不够“吸引人”,您具体想改变什么?你期望的输出是什么?此外,如果您发布代码,请确保它是正确的。
beeswarm
功能从何而来。最好内联样本数据,因为我们无法访问“data.csv”。如果我们不能运行代码,我们就不能尝试不同的可能解决方案。除了@MrFlick所哀叹的之外,也许还有另一个话题需要讨论“为什么需要以这种方式放置此数据表?”如果要发布或提交此表,我个人认为这不是放置此表的最合适方式,无论是用LaTeX还是Word格式化。(顺便说一句,这两种方法都可以使表看起来比这一个好得多。)不过,我确实喜欢挑战,所以发布一些代码/数据,让我们试试。我已经将代码更改为一种“应该”自行运行的形式。至于beewarm,这是一个R包,它生成箱线图上的点,以便可视化数据分布。表的位置在那里,因为我需要显示一组t检验(或其他检验)的结果。我可以使用PowerPoint或Word来生成这些,这就是我在示例中所做的,我正试图实现的。问题是我有140个这样的数字要生成,每个都有自己的结果。我不希望对每一个人都这样做。