我想在平行于轴但朝向图中心的多个图的右外边缘添加文本(在以下图中,单词“ 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)
如果mtext
函数使用srt
参数而不是las
(对于S plus显然是这种情况),这将是微不足道的,并且上述解决方法使用{{1} }是不必要的。但是我希望能够以相同的方式将外边缘的文本(上面的“线条颜色”)定位,即使使用人工操作,我似乎也无法做到(使用usr
仍然会约束文本到最近的图形区域而不是设备区域。
是否有一种方法不需要像the answer of @mrflick here中那样使用xpd=T
?看来应该没什么大不了的,但我不知道该怎么做。
答案 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)
如果您想根据用户坐标("usr"
和图边距("mai"
)计算y位置,请参阅以前的修订。