【问题标题】:R Graphics: axis label placement relative to tick labels?R Graphics:相对于刻度标签的轴标签位置?
【发布时间】:2011-11-12 10:50:49
【问题描述】:

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

问:有没有更简单的方法来做到这一点?有没有办法查询 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)

【问题讨论】:

  • 合理的问题。我认为您可以使用textwidth 来获取宽度,但是您必须准确地重构R 决定如何格式化它们。这在网格图形中可能更容易实现(但我不知道如何)
  • 正如 Ben Bolker 所说,上面的图表可以很容易地在网格中完成,但这是您感兴趣的路线吗?或者您是否打算拥有更复杂的图形,而从头开始构建这样的自定义绘图功能几乎没有意义?
  • @baptiste:你是对的。我希望能够构建更复杂的图形

标签: r plot


【解决方案1】:

您可以通过`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]) ))

【讨论】:

  • usr 参数非常有用。我没有意识到并且在帮助中以某种方式忽略了它。 usrcoord.x.left 我假设你的意思是 par("usr")[1]。玩完发现我喜欢mtext(text="eps", side=3, at=par("usr")[1],它以y轴为中心。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 2015-12-18
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
  • 2012-10-06
相关资源
最近更新 更多