R图形:相对于记号标签的轴标签放置?

R图形:相对于记号标签的轴标签放置?,r,plot,R,Plot,我想制作一个简单的R图,y轴标签位于y轴刻度标签的中心。我用下面的代码创建了我喜欢的东西。但它需要在图形参数上进行一些摸索 问:有没有一种不那么老套的方法?是否有方法查询y轴刻度标签的宽度,以便我可以使用这些信息将y轴标签居中它们之上 set.seed(1) n.obs <- 390 vol.min <- .20/sqrt(252 * 390) eps <- rnorm(n = n.obs, sd = vol.min) windows(wid

我想制作一个简单的R图,y轴标签位于y轴刻度标签的中心。我用下面的代码创建了我喜欢的东西。但它需要在图形参数上进行一些摸索

问:有没有一种不那么老套的方法?是否有方法查询y轴刻度标签的宽度,以便我可以使用这些信息将y轴标签居中它们之上

set.seed(1)
n.obs       <- 390
vol.min     <- .20/sqrt(252 * 390)
eps         <- rnorm(n = n.obs, sd = vol.min)
windows(width = 5.05, height = 3.8)
plot(eps,  main  =  "Hello  World!", las=1, ylab="")
mtext(text="eps", side=3, at=-60)
set.seed(1)

n、 obs您可以使用'par(“usr”)获得用户坐标的范围,然后转换边距单位。通过使绘图区域成为非标准,您添加了额外的扭曲。在标准的7 x 7设备上,此功能可以工作:

mtext(text="eps", side=3, at=usrcoord.x.left-0.075*diff(range(par("usr")[1:2]) ))
但在较小的绘图窗口上,您需要使用:

mtext(text="eps", side=3, at=usrcoord.x.left-0.1*diff(range(par("usr")[1:2]) ))

合理的问题。我认为,您可以使用
textwidth
来获取宽度,但您必须精确地重构R决定如何格式化它们。这在网格图形中可能更容易实现(但我不知道如何实现),正如Ben Bolker所说,上面的图形可以在网格中轻松实现,但这是您感兴趣的路线吗?或者你想拥有更复杂的图形,而从头开始构建这样一个定制的绘图功能毫无意义?@baptiste:你说得对。我希望能够构建更复杂的图形
usr
参数非常有用。我没有意识到这一点,在帮助中不知怎么地忽略了这一点。我想你说的
usrcoord.x.left
是指
par(“usr”)[1]
。玩过之后,我发现我喜欢
mtext(text=“eps”,side=3,at=par(“usr”)[1]
,它以y轴为中心。