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)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。