在通用R图中将标题放在标题周围

Pea*_*nut 11 plot r

我有一个标题的框架情节.我想知道是否有一种快速简便的方法来围绕(主要)标题的标题.

框架的宽度应与图表周围的框架宽度相同.还有办法调整框架的高度吗?

我想坚持通用的绘图功能.

# Some example data
x <- rnorm(10)
y <- rnorm(10)

# Plot data and add title
plot(x,y, 
     xlab = "",
     ylab = "",
     frame = TRUE
     )
title( main = "This should be framed")
Run Code Online (Sandbox Code Playgroud)

非常感谢和周末愉快!

Hen*_*rik 12

一种可能性是使用rect.

首先用于par("usr")获得"绘图区域的用户坐标的极端".

因为你想要" 框架应该与图周围的框架具有相同的宽度 ",所以x位置很简单:使用'用户坐标'的第一个和第二个值作为xleftxright.

rect需要更多工作的底部和顶部位置.title" 默认为垂直居中(外)边距3 "(?title)的y位置.使用par("mai")来获取利润英寸.通过将边距3除以2(par("mai")[3] / 2)来计算前y边距的中点.将帧的高度定义为例如0.5,其分别对应于标题的中心与图形区域和绘图区域的边界之间的中间.

要从英寸转换为用户坐标,请使用grconvertY.也就是说,我们将以英寸为单位的乘以diff(grconvertY(y = 0:1, from = "inches", to = "user"))(参见此处).然后将该值添加到y(coord[4])的上部用户坐标.

coord <- par("usr")
y_mid <- par("mai")[3] / 2
height <- 0.5
conv <- diff(grconvertY(y = 0:1, from = "inches", to = "user"))

rect(xleft = coord[1],
     xright = coord[2],
     ybottom = coord[4] + (y_mid * (1 - height) * conv),
     ytop = coord[4] + (y_mid * (1 + height) * conv),
     xpd = TRUE)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述