Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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_Graphics - Fatal编程技术网

如何在R中的多绘图面板中跨绘图或在绘图之间进行注释

如何在R中的多绘图面板中跨绘图或在绘图之间进行注释,r,graphics,R,Graphics,如果我在一个面板中有多个绘图,我希望能够放置跨越多个绘图区域或位于绘图区域之间的文本注释。我相信一定有办法做到这一点,但我需要一些人帮助我解决问题。 以下是一些假数据,用于在一个面板上创建四个图: x1 = rnorm(100) x2 = rnorm(100) x3 = rnorm(100) x4 = rnorm(100) par(mfrow=c(2,2)) hist(x1, xlab="", main="Group A") hist(x2, xlab="", main="Group B")

如果我在一个面板中有多个绘图,我希望能够放置跨越多个绘图区域或位于绘图区域之间的文本注释。我相信一定有办法做到这一点,但我需要一些人帮助我解决问题。
以下是一些假数据,用于在一个面板上创建四个图:

x1 = rnorm(100)
x2 = rnorm(100)
x3 = rnorm(100)
x4 = rnorm(100)

par(mfrow=c(2,2)) 
hist(x1, xlab="", main="Group A")
hist(x2, xlab="", main="Group B")
hist(x3, xlab="", main="")
hist(x4, xlab="", main="")
这将创建下面的多重打印面板,除了我还添加了红色文本。在R中创建图形面板后,我通过注释PDF文件添加了红色文本,然后将其保存为PDF。我想学习的是如何在R中以编程方式注释图形面板,而不是保存它并注释保存的文件。
通常,我只会使用
text()
mtext()
添加注释。但这仅在注释单个图形时有效。是否有一种方法可以添加相对于整个4个图形面板坐标的注释?我现在正在寻找基本图形的解决方案,但如果有人知道如何在ggplot2或lattice中执行类似的操作,我也很有兴趣看到这一点。

您想将
mtext
outer=TRUE
一起使用。例如,
mtext('Results2',side=1,line=-2,outer=TRUE)
mtext('Results1',side=3,line=-20,outer=TRUE)
如果您确实想更好地控制这些类型的布局问题,可以使用恰当命名的
布局

m <- matrix(c(1,2,3,3,4,5,6,6),ncol = 2,byrow = TRUE)
layout(m,widths = c(0.5,0.5),heights = c(0.45,0.05,0.45,0.05))

par(mar = c(2,4,4,2) + 0.1)
hist(x1, xlab="", main="Group A")
hist(x2, xlab="", main="Group B")

par(mar = c(0,0,0,0)) 
plot(1,1,type = "n",frame.plot = FALSE,axes = FALSE)
u <- par("usr")
text(1,u[4],labels = "Here",col = "red",pos = 1)

par(mar = c(2,4,2,2) + 0.1)
hist(x3, xlab="", main="")
hist(x4, xlab="", main="")

par(mar = c(0,0,0,0)) 
plot(1,1,type = "n",frame.plot = FALSE,axes = FALSE)
u <- par("usr")
text(1,u[4],labels = "Here",col = "red",pos = 1)

m对于本例,
layout
功能是最简单的,如前所示,但对于更一般的情况,您还应该学习
grconvertX
grconvertY
功能(以及使用
par(xpd=
。convert函数可以为您提供不同坐标系的当前用户坐标中的坐标,因此,例如,您可以通过将标准化设备坐标转换为0.5来居中页面上的某些内容。

以下是使用Greg Snow方法的示例:

par(mfrow=c(2, 2))
replicate(4, plot(matrix(runif(20), nrow=10)))
text(grconvertX(.5, "ndc", "user"), grconvertY(.25, "ndc", "user"), "TEST", cex=3, col="red", xpd=NA)
text(grconvertX(.5, "ndc", "user"), grconvertY(.75, "ndc", "user"), "TEST", cex=3, col="red", xpd=NA)

@ MPLOUDE是的,<代码>版式非常光滑。像其他的BASE一样,它可以有点烦躁,但是你确实知道所有的PAR设置都快。这是个诀窍。谢谢让我知道“代码>版式< /代码>。我可以看到我会一遍又一遍的使用它。有人会说,当你走那么远的时候,它会是EAS。使用网格图形的ier(可能与gridBase包结合使用)grid和gridBase包当然值得一看,但我认为,在很多情况下,一组已经很容易完成的基本图可以添加基于“grconvertX”或
grconvertY
的位置注释。在上面的示例中,你会将多行文字放在哪里?我无法实现这一点。之后操作代码中对hist的最后一次调用。您可能需要根据数据集值调整行数(in line=xx)