使用R中的网格将单位从npc转换为原生单位



我的问题的核心:

我正在尝试使用网格包的convertUnit、convertX和convertY函数将npc单位转换为本地单位。(npc=标准化的父坐标,可能被称为ndc单位,对基础图形R中的一些人来说是标准化的设备坐标。我正在尝试使用原生单位,即绘制绘图的单位,因此使用xlim和ylim单位。(然而,当我尝试这样做时:

> xyplot(1:10~1:10)
> convertX(unit(.9, "npc"), "native")
[1] 484.2native

当我期望一个接近9的数字作为原生x坐标时。convertX似乎正在返回以设备坐标/像素为单位的单位。

推理:我正试图使用一个基本定位器类型的设备来返回npc坐标,并从这些npc坐标转换为绘制图形的本地坐标。虽然我可以使用基本图形的定位器或网格定位器,但我正试图通过将npc转换回原生图形,将这种新的非阻塞定位器的功能扩展到网格/晶格图形。convertUnit和convertY也不起作用。

问题网格是否可以从npc转换回活动绘图窗口的本地坐标?为什么convertX返回像素而不是本地坐标?

提前非常感谢。

针对之前遗漏xyplot的标签和草率错误进行了编辑。我很抱歉,但它适用于xyplot。

'"native"'位置和尺寸相对于视口的"xscale"one_answers"yscale"。转换发生在当前视口中。

> plot(1:10)
> convertX(unit(.9,"npc"),"native")
[1] 453.6native
> pushViewport(viewport())
> convertX(unit(.9,"npc"),"native")
[1] 0.9native
> convertX(unit(.1,"npc"),"picas")
[1] 4.21575picas #making window smaller
> convertX(unit(.1,"npc"),"picas")
[1] 1.9798375984252picas #making window larger
> convertX(unit(.1,"npc"),"picas")
[1] 5.25783218503937picas

因此,您首先需要一个视口来获取合理的值。

显然,在推送视口后,它忘记了底层绘图的设置坐标,新坐标似乎相当于npc坐标。

直到您打印到新视口中,然后返回到原点:

xyplot(1:10 ~ 10:1)
> convertX(unit(.9, "npc"), "native")
[1] 605.7native
> pushViewport(viewport())
> convertX(unit(.9, "npc"), "native")
[1] 0.9native
> xyplot(1:10 ~ 10:1)
> convertX(unit(.9, "npc"), "native")
[1] 605.7native

有可能获得与实际绘制x和y的坐标相对应的坐标吗?

最新更新