如何将文本放在R中的子图的顶部

时间:2015-01-21 21:25:07

标签: r plot histogram

如果您不知道如何放置文本(使用文本功能,以便可以更自由地编辑,而不是图例功能),当坐标变化且您不知道时,R中每个子图的顶部y max或x max(例如,对于你事先不知道频率的直方图)你是怎么做到的?

附录:另外,mtext使用边距,我说的是坐标空间,而不是边距空间。

2 个答案:

答案 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

我得到了这张图片:

myplot

答案 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)
})

enter image description here

您也可以使用mtext

mtext(paste('Plot', i), 3, line = -1.5)