我想在当前设备上画两条垂直线。无论输出的纵横比和设备大小如何,它们在设备上都应该具有相同的表观长度。
这可行吗?原则上,这就是在屏幕上画一个完美圆的问题。
您可以检索当前图形窗口坐标。感谢Josh O'Brian不久前为我提供了这段代码。首先创建一个窗口(或绘制一些东西),然后运行以下行:
myasp <- with(par(),(pin[2]/pin[1])/(diff(usr[3:4])/diff(usr[1:2])))
然后使用该纵横比信息来调整要绘制的线的长度。
有几种方法,我发现在网格图形中更容易
library(grid)
grid.circle()
vp <- viewport(width=unit(0.5, "snpc"), height=unit(0.5, "snpc"))
grid.rect(vp=vp, gp=gpar(lty=2))
grid.segments(x0=c(0,0), x1=c(1,1),
y0=c(0,1), y1=c(1,0),
default.units="npc", vp=vp)
您可能对grconvertX
和grconvertY
函数感兴趣。使用这些,您可以指定以英寸或其他单位为单位的坐标,并由此计算绘制直线的用户坐标。