当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R grid.convert 不同网格坐标系之间的转换


R语言 grid.convert 位于 grid 包(package)。

说明

这些函数采用一个单位对象并将其转换为不同坐标系中的等效单位对象。

用法

convertX(x, unitTo, valueOnly = FALSE)
convertY(x, unitTo, valueOnly = FALSE)
convertWidth(x, unitTo, valueOnly = FALSE)
convertHeight(x, unitTo, valueOnly = FALSE)
convertUnit(x, unitTo,
             axisFrom = "x", typeFrom = "location",
             axisTo = axisFrom, typeTo = typeFrom,
             valueOnly = FALSE)

参数

x

一个单位对象。

unitTo

单位转换到的坐标系。有关有效坐标系,请参阅unit 函数。

axisFrom

"x""y" 指示单位对象是否表示 x 或 y 方向上的值。

typeFrom

"location""dimension" 指示单位对象表示位置还是长度。

axisTo

axisFrom 相同,但适用于要创建的单元对象。

typeTo

typeFrom 相同,但适用于要创建的单元对象。

valueOnly

逻辑指示。如果TRUE,则该函数不返回单位对象,而仅返回转换后的数值。

细节

convertUnit 函数允许进行通用转换。对于最常见的转换,其他四个函数只是更方便front-ends。

转换发生在当前视口内。

目前无法转换为所有有效的坐标系(例如"strwidth" 或"grobwidth")。我不确定所有这些是否都是不可能的,在现阶段它们似乎难以置信。

在正常使用网格时,这些函数应该不是必需的。如果您想以英寸而不是用户坐标来表示位置或尺寸,那么您应该简单地执行类似 unit(1, "inches") 的操作,而不是类似 unit(0.134, "native") 的操作。

然而,在某些情况下,用户需要对单位值进行计算,并且该函数变得必要。在这种情况下,请注意以下警告。

指定坐标系中的单位对象(除非 valueOnlyTRUE,在这种情况下返回值为数字)。

警告

该转换仅对当前设备尺寸有效。如果调整设备大小,则至少某些转换将变得无效。例如,假设我创建一个单元对象,如下所示:oneinch <- convertUnit(unit(1, "inches"), "native")。现在,如果我调整设备大小,以一英寸为单位的单位对象不再对应于 1 英寸的物理长度。

例子

## A tautology
convertX(unit(1, "inches"), "inches")
## The physical units
convertX(unit(2.54, "cm"), "inches")
convertX(unit(25.4, "mm"), "inches")
convertX(unit(72.27, "points"), "inches")
convertX(unit(1/12*72.27, "picas"), "inches")
convertX(unit(72, "bigpts"), "inches")
convertX(unit(1157/1238*72.27, "dida"), "inches")
convertX(unit(1/12*1157/1238*72.27, "cicero"), "inches")
convertX(unit(65536*72.27, "scaledpts"), "inches")
convertX(unit(1/2.54, "inches"), "cm")
convertX(unit(1/25.4, "inches"), "mm")
convertX(unit(1/72.27, "inches"), "points")
convertX(unit(1/(1/12*72.27), "inches"), "picas")
convertX(unit(1/72, "inches"), "bigpts")
convertX(unit(1/(1157/1238*72.27), "inches"), "dida")
convertX(unit(1/(1/12*1157/1238*72.27), "inches"), "cicero")
convertX(unit(1/(65536*72.27), "inches"), "scaledpts")

pushViewport(viewport(width=unit(1, "inches"),
                       height=unit(2, "inches"),
                       xscale=c(0, 1),
                       yscale=c(1, 3)))
  ## Location versus dimension
  convertY(unit(2, "native"), "inches")
  convertHeight(unit(2, "native"), "inches")
  ## From "x" to "y" (the conversion is via "inches")
  convertUnit(unit(1, "native"), "native",
               axisFrom="x", axisTo="y")
  ## Convert several values at once
  convertX(unit(c(0.5, 2.54), c("npc", "cm")),
                c("inches", "native"))
popViewport()
## Convert a complex unit
convertX(unit(1, "strwidth", "Hello"), "native")

作者

Paul Murrell

也可以看看

unit

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Convert Between Different grid Coordinate Systems。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。