在设备区域的外部空白处旋转文本

时间:2018-06-26 17:14:34

标签: r plot

我想在平行于轴但朝向图中心的多个图的右外边缘添加文本(在以下图中,单词“ red”和“ blue”的方向:

par(mfcol=2:1)

curve(sin,-2*pi,2*pi,col=2)
limits <- par("usr")
text(limits[2]+.25, mean(limits[3:4]),
     "red", srt=270, xpd=T)
curve(sin,-2*pi,2*pi,col=4)
text(limits[2]+.25, mean(limits[3:4]),
     "blue", srt=270, xpd=T)
mtext("Color of line",side=4,outer=T)

toy example

如果mtext函数使用srt参数而不是las(对于S plus显然是这种情况),这将是微不足道的,并且上述解决方法使用{{1} }是不必要的。但是我希望能够以相同的方式将外边缘的文本(上面的“线条颜色”)定位,即使使用人工操作,我似乎也无法做到(使用usr仍然会约束文本到最近的图形区域而不是设备区域。

是否有一种方法不需要像the answer of @mrflick here中那样使用xpd=T?看来应该没什么大不了的,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

要查找设备中心的y坐标,可以使用grconvertY从“标准化设备坐标”("ndc";范围从0到1)转换为用户坐标。

此处的x值可通过适当的因子(例如limits[2] * 1.2)简单地进行调整。

windows()
par(mfrow = c(2, 1), oma = c(0, 0, 0, 2))

curve(sin, -2*pi, 2*pi, col = 2)
limits <- par("usr")
text(limits[2] + 0.25, mean(limits[3:4]),
     "red", srt = 270, xpd = TRUE)
curve(sin, -2*pi, 2*pi, col = 4)
text(limits[2] + 0.25, mean(limits[3:4]),
     "blue", srt = 270, xpd = TRUE)

text(x = limits[2] * 1.2, y = grconvertY(0.5, from = "ndc"),
     labels = "color of line", xpd = NA, srt = 270)

enter image description here


如果您想根据用户坐标("usr"和图边距("mai")计算y位置,请参阅以前的修订。