屏幕坐标(R)



我想在当前设备上画两条垂直线。无论输出的纵横比和设备大小如何,它们在设备上都应该具有相同的表观长度。

这可行吗?原则上,这就是在屏幕上画一个完美圆的问题。

您可以检索当前图形窗口坐标。感谢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)

您可能对grconvertXgrconvertY函数感兴趣。使用这些,您可以指定以英寸或其他单位为单位的坐标,并由此计算绘制直线的用户坐标。

相关内容

  • 没有找到相关文章