如果我在一个面板中有多个绘图,我希望能够放置跨越多个绘图区域或在绘图区域之间的文本注释。我确定必须有办法做到这一点,但我需要一些帮助来弄清楚如何 这里有一些假数据可以在一个面板上创建四个图:
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或格子中做类似的事情,我也有兴趣看到它。
答案 0 :(得分:10)
如果您真的希望更好地控制这些类型的布局问题,可以使用恰当命名的layout
。
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)
答案 1 :(得分:7)
您希望将mtext
与outer=TRUE
一起使用。例如,mtext('Results2', side=1, line=-2, outer=TRUE)
和mtext('Results1', side=3, line=-20, outer=TRUE)
。
答案 2 :(得分:3)
对于此示例,layout
函数最简单,如已经显示的那样,但对于更一般的情况,您还应该学习grconvertX
和grconvertY
函数(以及使用{设置剪裁) {1}}。转换函数可以为您提供不同坐标系的当前用户坐标中的坐标,例如,您可以通过从规范化设备坐标转换0.5来在页面上居中。
答案 3 :(得分:0)