如果您不知道如何放置文本(使用文本功能,以便可以更自由地编辑,而不是图例功能),当坐标变化且您不知道时,R中每个子图的顶部y max或x max(例如,对于你事先不知道频率的直方图)你是怎么做到的?
附录:另外,mtext使用边距,我说的是坐标空间,而不是边距空间。
答案 0 :(得分:2)
您可以使用par('usr')。它为您提供了绘图的当前坐标。如果您希望每个子图的某个区域中的文本并且您事先不知道坐标(例如直方图),则非常有用。输出如下:
par('usr')
[1] -0.28 7.28 -3.00 78.00
其中x min是列表的第一个成员,x max是第二个,y min是第三个,y max是第四个。您可以将par('usr')视为R中的向量,如果您希望它位于左上角,您可以这样做,例如:
text(par('usr')[1]+2,.9*par('usr')[4],labels="blahblah")
由此将绘制在绘图的上部10%和绘图空间的最左侧坐标中的+2。当然你可以调整它,但这或多或少会左上角。
将此代码用于我的数据:
y <- rnorm(100)
z <- rnorm(100)
par(mfrow = c(1,2))
hist(y, breaks = 30)
text(.8 * par('usr')[2], .9 * par('usr')[4], labels = paste("mean:", round(mean(y), 2)))
text(.8 * par('usr')[2], .86 * par('usr')[4], labels = paste("median:", round(median(y), 2)))
hist(z, breaks = 30)
text(.8 * par('usr')[2], .9 * par('usr')[4], labels = paste("mean:", round(mean(z), 2)))
text(.8 * par('usr')[2], .86 * par('usr')[4], labels = paste("median:", round(median(z), 2)))
mtext("distributions", side = 3, line = -2, outer = TRUE, col = 2) # added mtext to show how I would use it to create a title
我得到了这张图片:
答案 1 :(得分:0)
假设您希望文本在内部的情节区域,您可以使用legend
,并按关键字指定位置(请参阅?legend
中的详细信息):
par(mfrow=c(2, 2))
sapply(1:4, function(i) {
plot(runif(10))
legend('top', paste('Plot', i), bty='n', text.font=2)
})
您也可以使用mtext
:
mtext(paste('Plot', i), 3, line = -1.5)