R:使用具有通用X-Y绘图功能的cm单位定位图形元素

时间:2016-07-24 18:57:59

标签: r plot

我相信这对R社区来说并不新鲜,但对我来说并不陌生,无法找到明确的答案。 假设这个例子:

plot(1:10, xlab="", xaxt="n") # supress OX axis
title(xlab="How can I use cm?", line=2.5)
axis(side=1, at=1:10, line=0.2) 

enter image description here

在这里,我使用函数line中的 title() 参数将标签放置在2,5行文本"从图边缘向外#34; (如?title帮助中所述)。是否有任何争论可以采取cm,或使用cm的方法?另外,如何找出一行文字包含多少厘米(如果没有其他方法)?

知道/设置 cm 中的边距也不错,而不仅仅是par("mar") [文字行]或par("mai") [英寸]。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

使用this answer中的line2user功能,您可以将厘米转换为“线”,然后将线转换为用户坐标,并使用xpd = TRUE将内容添加到绘图中:

cm2line <- function(x) {
  lh <- par('cin')[2] * par('cex') * par('lheight')
  inch <- x/2.54
  inch/lh
}

par(mai = rep(5/2.54, 4))
plot.new() 
box()
mtext("hello", side = 3, line = cm2line(2))
abline(h = line2user(cm2line(1:5), side = 4), xpd = TRUE)
abline(h = line2user(cm2line(1:5), side = 1), xpd = TRUE)
abline(v = line2user(cm2line(1:5), side = 2), xpd = TRUE)
abline(v = line2user(cm2line(1:5), side = 3), xpd = TRUE)

enter image description here