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


R x11 X 窗口係統圖形 (X11)


R語言 x11 位於 grDevices 包(package)。

說明

在 Windows 上,

X11()x11() 函數是 windows() 的簡單包裝,以方便曆史兼容性:在大多數情況下,調用 x11()X11() 可以打開交互式圖形設備。

R在 3.6.0 之前的版本中,Windows 版本的形式參數列表較短。因此,呼籲X11(*)有參數應該名字它們是為了向後兼容。

以下幾乎所有信息都不適用於 Windows。

在 Unix 類係統上

X11 啟動 X Window 係統(版本 11)的圖形設備驅動程序。這隻能在有權訪問 X 服務器的計算機/帳戶上完成。

x11 被識別為 X11 的同義詞。

R函數是兩個設備的包裝器,一個基於 Xlib (https://en.wikipedia.org/wiki/Xlib)和一個使用 cairography 的(https://www.cairographics.org)。

用法

X11(display = "", width, height, pointsize, gamma, bg, canvas,
    fonts, family, xpos, ypos, title, type, antialias, symbolfamily)

X11.options(..., reset = FALSE)

參數

display

將出現圖形窗口的顯示器。默認是使用用戶環境變量中的值DISPLAY。如果 X11 設備已在另一個顯示器上打開,則此操作將被忽略(並帶有警告)。

width, height

繪圖窗口的寬度和高度,以英寸為單位。如果是 NA ,則從資源中獲取,如果未指定,則默認為 7 英寸。另請參閱“資源”。

pointsize

要使用的默認磅值。默認為 12

gamma

伽馬校正模糊因子。 R中的顏色是sRGB;如果您的顯示器不符合 sRGB,您可以通過調整此參數對 RGB 通道應用額外的伽瑪校正來改進。默認為 1(無額外伽馬校正)。

bg

color,初始背景顏色。默認"transparent"

canvas

顏色。畫布的顏色,隻有背景色透明時才可見。應該是不透明的顏色(任何 alpha 值都將被忽略)。默認"white"

fonts

僅適用於 type = "Xlib":將替換粗細、傾斜和大小的 X11 字體說明字符串。有兩種,第一個用於字體 1 至 4,第二個用於字體 5(符號字體)。請參閱“字體”部分。

family

默認係列:長度為 1 的字符串。這主要用於基於 cairo 的設備,但對於 type = "Xlib"X11Fonts() 數據庫用於將係列名稱映射到 fonts (並且此參數優先於該參數)。

xpos, ypos

整數:窗口左上角的初始位置,以像素為單位。負值來自對角,例如xpos = -100 表示右上角距離屏幕右邊應為 100 像素。如果NA(默認值),則連續設備從左上角開始以 20 個像素為級聯。另請參閱“資源”。

title

字符串,最多 100 個字節。使用默認值 "" ,在內部創建合適的標題。整數的 C 樣式格式將替換為設備號(有關更多詳細信息,請參閱 postscriptfile 參數)。如何處理非 ASCII 標題取決於實現。

type

字符串,其中之一"Xlib","cairo","nbcairo"或者"dbcairo"。如果係統編譯時不支持 cairgraphics,則隻有第一個可用。默認為"cairo"其中R是使用構建的pangocairo(macOS 上通常不是這種情況),否則"Xlib".

antialias

對於 cairo 類型,要使用的抗鋸齒類型(如果有)。 c("default", "none", "gray", "subpixel") 之一。

symbolfamily

僅適用於基於 cairo 的設備:長度為 1 的字符串,指定用作 "symbol" 字體的字體係列(例如,用於 plotmath 輸出)。默認值為"default",這意味著R將根據圖形設備函數選擇默認的"symbol"字體。

reset

邏輯:默認值應該重置為默認值嗎?

...

X11 的任何參數,加上 colortypemaxcubesize(請參閱“顏色渲染”部分)。

細節

X11 的所有參數的默認值均由 X11.options 設置:“Arguments”部分提供“factory-fresh”默認值。

初始大小和位置隻是提示,窗口管理器可能不會執行操作。此外,某些係統(尤其是筆記本電腦)被設置為具有與物理屏幕不同尺寸的屏幕。

選項type在兩個獨立的設備之間進行選擇:R可以在兩者都不支持的情況下構建,type = "Xlib"或兩者。如果兩者都可用,則類型"cairo","nbcairo""dbcairo"提供

  • 文本和線條的抗鋸齒。

  • 半透明的顏色。

  • 可縮放文本,包括 4.5 pt 等尺寸。

  • 完全支持 UTF-8,因此在具有合適字體的係統上,您可以在單個圖形上以多種語言繪製(即使在非 UTF-8 語言環境中,這也可以工作)。輸出應該是locale-independent。

基於開羅的設備有三種變體。 type = "nbcairo" 沒有緩衝。 type = "cairo" 有一些緩衝,並支持 dev.holddev.flushtype = "dbcairo" 緩衝輸出並大約每 100 毫秒更新一次屏幕(默認情況下)。刷新間隔可以通過例如設置(以秒為單位) options(X11updates = 0.25):打開設備時參考該值。僅每 50 毫秒(最多)查找一次更新,並且在繁重的圖形計算期間僅每 500 毫秒查找一次更新。

哪個版本最快取決於 X11 連接和繪圖類型。您可能希望使用緩衝類型,除非在 X 服務器上使用後備存儲(例如,它始終位於 x86_64 macOS XQuartz 服務器上),否則窗口暴露時重新繪製會很慢。在慢速連接上,type = "dbcairo" 可能會提供最佳性能。

由於沒有 Pango 的 macOS 上的字體選擇已知問題(例如,大多數 CRAN 發行版),type = "cairo" 不是默認值。這些問題包括混合粗體和斜體(已解決)、選擇不正確的字形以及醜陋或缺失的符號字形。

所有使用 X11 服務器的設備(包括 type = "Xlib" 版本的位圖設備,例如 png )共享內部結構,這意味著它們必須使用相同的 display 和視覺。如果要更改顯示,請先關閉所有此類設備。

顯示的光標指示設備的狀態。如果處於靜止狀態,則光標是箭頭:當使用定位器時,它是十字準線光標;當繪圖計算正在進行時(並且可以檢測到),它是監視光標。 (顯示的確切光標取決於所使用的窗口管理器。)

X11 字體

本節僅適用於type = "Xlib"

設備的初始/默認字體係列可以通過 fonts 參數指定,但如果指定了與設備無關的 R 圖形字體係列(例如,通過圖形包中的 par(family =)),則 X11 設備將使用X11 字體數據庫(請參閱 X11Fonts )將 R 圖形字體係列轉換為 X11 特定的字體係列說明。如果 family 作為參數提供,則使用 X11 字體數據庫對其進行轉換,否則使用參數 fonts (默認值由 X11.options 給出)。

X11 通過匹配模式來選擇字體,它很可能會選擇錯誤編碼的字體或不包含您的語言的字形(在 iso10646-1 字體中尤其常見)。

fonts 參數是一個二元素字符向量,第一個元素對於成功使用非西歐字體至關重要。已證明有用的設置包括

"-*-mincho-%s-%s-*-*-%d-*-*-*-*-*-*-*" 適用於 CJK 語言,"-cronyx-helvetica-%s-%s-*-*-%d-*-*-*-*-*-*-*" 適用於俄語。

對於 UTF-8 語言環境, XLC_LOCALE 數據庫提供字符編碼之間的映射,您可能需要為您的語言環境添加一個條目(例如,Fedora Core 3 缺少 ru_RU.utf8 條目)。

開羅字體

基於 cairgraphics 的設備直接使用字體係列名稱,例如 "Helvetica" ,最初可以通過 family 參數選擇,然後通過 pargpar 進行選擇。存在三個與設備無關的字體係列的映射,"sans" 用於 sans-serif 字體(到 "Helvetica" ),"serif" 用於襯線字體(到 "Times" ),"mono" 用於等寬字體(到"Courier")。

字體選擇由Pango(通常通過 fontconfig) 或者fontconfig(在 macOS 上,也許在其他地方)。結果取決於運行係統上安裝的字體R- 設置環境變量FC_DEBUG到 1 通常允許對選擇過程進行一些跟蹤。

當安裝高質量可縮放字體(通常為 Type 1 或 TrueType 格式)時,此方法效果最佳:請參閱“R 安裝和管理”手冊,了解有關如何獲取和安裝此類字體的建議。目前,使用 TrueType 字體將實現最佳渲染(包括使用字距調整):請參閱https://www.freedesktop.org/software/fontconfig/fontconfig-user.html 了解如何設置係統以首選它們。默認係列 ( "Helvetica" ) 可能不使用字距調整:如果安裝了它們,則應該使用 "Arial""DejaVu Sans""Liberation Sans" (也許還有 "FreeSans" )。對於那些喜歡帶襯線字體的人,請嘗試 "Times New Roman""DejaVu Serif""Liberation Serif" 。要匹配 LaTeX 文本,請使用類似 "CM Roman" 的內容。

從版本 31 開始的 Fedora 係統不喜歡用於渲染符號的默認 "symbol" 字體係列(例如 plotmath )。對於這些係統,用戶應通過 symbolfamily 指定不同的字體。也可以通過 X11.options 更改默認值。

符號渲染不正確的問題(例如quote(pi)expression(10^degree))已在安裝了 Wine 符號字體的 Linux 係統上看到 -fontconfig然後更喜歡這個並誤解它的編碼。將以下行添加到‘〜/.fonts.conf' 或者 '/etc/fonts/local.conf’ 可以通過首選 URW Type 1 符號字體來規避此問題。

<fontconfig>
<match target="pattern">
  <test name="family"><string>Symbol</string></test>
  <edit name="family" mode="prepend" binding="same">
    <string>Standard Symbols L</string>
  </edit>
</match>
</fontconfig>

對此的測試是在命令行運行fc-match Symbol。如果這表明symbol.ttf這可能是 Wine 符號字體 - 使用locate symbol.ttf查看是否從包含“的目錄中找到”⁠酒⁠' 在名字裏。

資源

標準 X11 資源geometry可用於指定窗口位置和/或大小,但將被指定為參數或非參數的值覆蓋NA默認設置在X11.options。尋找的類是R_x11。請注意,資源指定的寬度和高度以像素為單位,而不是以英寸為單位。參見例如‘⁠人X⁠' (或者https://www.x.org/releases/current/)。 ‘中的示例行~/.Xresources' 可能

R_x11*geometry: 900x900-0+0

它指定屏幕右上角的 900 x 900 像素窗口。

顯色性

X11支持多種‘visual’類型,現在幾乎所有係統都支持‘truecolor’X11將默認使用。這使用任何 RGB 顏色的直接規範,最高可達支持的深度(通常每種顏色 8 位)。其他視覺效果使用調色板來支持更少的顏色,僅灰色甚至僅黑色/白色。調色板在所有 X11 客戶端之間共享,因此有必要限製 X11 客戶端使用的顏色數量。R.

type = "Xlib" 的默認設置是使用 X11 服務器視覺效果的最佳顏色模型:現在幾乎總是‘truecolor’。這可以被 X11.optionscolortype 參數覆蓋。注意:所有X11type = "Xlib"bmpjpegpngtiff設備共享一個colortype,該colortype在第一個打開的設備時設置。要更改 colortype 您需要關閉所有打開的此類設備,然後使用 X11.options(colortype =)

"true""pseudo""gray""mono" 的順序嘗試顏色類型類型(僅限黑色或白色)。值 "pseudo""pseudo.cube" 為偽彩色視覺效果提供兩種顏色策略。第一個策略提供 on-demand 顏色分配,它會生成精確的顏色,直到顯示器的顏色資源耗盡(此時繪圖將失敗)。第二個分配(如果可能)標準顏色立方體,並且請求的顏色由立方體中最接近的值近似。

colortype 等於 "pseudo.cube""gray" 時,會依次嘗試較小的調色板,直到完全分配一個調色板。如果最小嘗試分配失敗,設備將恢複為 "mono" 。對於 "gray",對於深度大於 8 的顯示器,搜索從 256 灰度開始,否則使用一半的可用顏色。對於"pseudo.cube",最大立方體大小由X11.options(maxcolorsize =) 設置,默認為 256。通過該設置,嘗試的最大立方體為 RGB 每個級別 4 個級別,在調色板中使用 64 種顏色。

基於 caairgraphics 的設備很可能隻能在“TrueColor”視覺效果下工作(或正確工作),盡管原則上這取決於 cairo 安裝:如果遇到任何其他視覺效果,則會發出警告。

type = "Xlib" 支持“TrueColor”、“PseudoColor”、“GrayScale”、StaticGrayMonoChrome 視覺效果:“StaticColor”和“DirectColor”視覺效果僅以黑/白處理。

抗鋸齒

抗鋸齒僅支持基於 cairgraphics 的設備,並且適用於圖形和字體。它通常更適合線條和文本,但可能會導致填充出現不良效果,例如用於image 繪圖,因此永遠不會用於填充。

antialias = "default" 原則上依賴於平台,但似乎通常等同於 antialias = "gray"

慣例

本節介紹“R Internals”手冊中規定的圖形設備約定的實現。

  • 默認設備尺寸為 7 平方英寸。

  • 字體大小以大點為單位。

  • 默認字體係列是 Helvetica。

  • 線寬以 1/96 英寸為單位,type = "Xlib" 至少為 1 個像素,否則為 0.01。

  • 對於type = "Xlib",圓半徑以像素為單位,最小為 1。

  • 顏色由 X11 服務器解釋,假定符合 sRGB。

警告

對所有 Unix 設備的支持是可選的,因此在包中 X11() 應在檢查 capabilities("X11") 後有條件地使用。

例子

## Not run: 
if(.Platform$OS.type == "unix") { # Only on unix-alikes, possibly Mac,
## put something like this is your .Rprofile to customize the defaults
setHook(packageEvent("grDevices", "onLoad"),
        function(...) grDevices::X11.options(width = 8, height = 6, xpos = 0,
                                             pointsize = 10))
}
## End(Not run)

也可以看看

DevicesX11FontssavePlot

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 X Window System Graphics (X11)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。