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 |
繪圖窗口的寬度和高度,以英寸為單位。如果是 |
pointsize |
要使用的默認磅值。默認為 |
gamma |
伽馬校正模糊因子。 R中的顏色是sRGB;如果您的顯示器不符合 sRGB,您可以通過調整此參數對 RGB 通道應用額外的伽瑪校正來改進。默認為 1(無額外伽馬校正)。 |
bg |
color,初始背景顏色。默認 |
canvas |
顏色。畫布的顏色,隻有背景色透明時才可見。應該是不透明的顏色(任何 alpha 值都將被忽略)。默認 |
fonts |
僅適用於 |
family |
默認係列:長度為 1 的字符串。這主要用於基於 cairo 的設備,但對於 |
xpos, ypos |
整數:窗口左上角的初始位置,以像素為單位。負值來自對角,例如 |
title |
字符串,最多 100 個字節。使用默認值 |
type |
字符串,其中之一 |
antialias |
對於 cairo 類型,要使用的抗鋸齒類型(如果有)。 |
symbolfamily |
僅適用於基於 cairo 的設備:長度為 1 的字符串,指定用作 "symbol" 字體的字體係列(例如,用於 plotmath 輸出)。默認值為"default",這意味著R將根據圖形設備函數選擇默認的"symbol"字體。 |
reset |
邏輯:默認值應該重置為默認值嗎? |
... |
|
細節
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.hold
和 dev.flush
。 type = "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
參數選擇,然後通過 par
或 gpar
進行選擇。存在三個與設備無關的字體係列的映射,"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.options
的 colortype
參數覆蓋。注意:所有X11
和type = "Xlib"
、bmp
、jpeg
、png
和tiff
設備共享一個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”、StaticGray
和 MonoChrome
視覺效果:“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)
也可以看看
相關用法
- R xyTable (x,y) 點的重數,例如,對於向日葵圖
- R xyz.coords 提取繪圖結構
- R xy.coords 提取繪圖結構
- R xfig XFig圖形設備
- R axisTicks 計算漂亮的軸刻度
- R hcl HCL 顏色規格
- R quartzFonts 石英字體
- R as.graphicsAnnot 強製圖形注釋對象
- R dev.interactive 當前圖形設備是否具有交互性?
- R chull 計算一組點的凸包
- R convertColor 在色彩空間之間轉換
- R X11Fonts X11 字體
- R plotmath R 中的數學注釋
- R dev.capture 將設備輸出捕獲為光柵圖像
- R dev.size 查找設備表麵的尺寸
- R pdf.options 設置/查看 pdf 參數默認值的輔助函數
- R densCols 平滑密度圖的顏色
- R windows Windows 圖形設備
- R rgb RGB 顏色規格
- R check.options 設置帶有一致性檢查的選項
- R msgWindow 操縱窗口
- R dev.flush 保持或刷新屏幕圖形設備上的輸出
- R n2mfrow 根據繪圖數計算默認“mfrow”
- R dev 控製多個設備
- R hsv HSV 顏色規格
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 X Window System Graphics (X11)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。