當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。