我的问题的核心:
我正在尝试使用网格包的convertUnit、convertX 和convertY 函数将npc 单位转换为本地单位。 (npc=归一化父坐标,可能称为 ndc 单位,归一化设备坐标为基础图形 R 中的一些坐标。我试图获取 native 单位,即绘制绘图的单位,因此就 xlim 和 ylim 单位而言。)但是,当我尝试这样做时:
> xyplot(1:10~1:10)
> convertX(unit(.9, "npc"), "native")
[1] 484.2native
当我期望接近 9 的数字作为 native x 坐标时。看来convertX正在返回设备坐标/像素中的单位。
推理: 我正在尝试使用基本定位器类型设备返回 npc 坐标,并将这些 npc 坐标转换为绘制图形的 native 坐标。虽然我可以使用基本图形的定位器或 grid.locator,但我正在尝试通过从 npc 转换回 native 来将这个新的非阻塞定位器的功能扩展到网格/晶格图形。 ConvertUnit 和 ConvertY 也不起作用。
问题 网格是否可以从 npc 转换回事件绘图窗口的 native 坐标?为什么 ConvertX 返回像素而不是 native 坐标?
提前致谢。
编辑标签和之前遗漏 xyplot 的草率错误。我很抱歉,但这对于 xyplot 来说是成立的。
最佳答案
‘“native”’位置和尺寸相对于视口(viewport)的‘xscale’和‘yscale’。 转换发生在当前视口(viewport)内。
> 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
因此,您首先需要一个视口(viewport)才能获取合理的值。
关于r - 使用 R 中的网格将单位从 npc 转换为本地单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7045990/