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


R png BMP、JPEG、PNG 和 TIFF 图形设备


R语言 png 位于 grDevices 包(package)。

说明

用于 BMP、JPEG、PNG 和 TIFF 格式位图文件的图形设备。

用法

bmp(filename = "Rplot%03d.bmp",
    width = 480, height = 480, units = "px", pointsize = 12,
    bg = "white", res = NA, ..., family = "", restoreConsole = TRUE,
    type = c("cairo", "Xlib", "quartz"), antialias)

jpeg(filename = "Rplot%03d.jpeg",
     width = 480, height = 480, units = "px", pointsize = 12,
     quality = 75,
     bg = "white", res = NA, ..., family = "", restoreConsole = TRUE,
     type = c("cairo", "Xlib", "quartz"), antialias)

png(filename = "Rplot%03d.png",
    width = 480, height = 480, units = "px", pointsize = 12,
    bg = "white", res = NA, ..., family = "", restoreConsole = TRUE,
    type = c("cairo", "cairo-png", "Xlib", "quartz"), antialias)

tiff(filename = "Rplot%03d.tiff",
     width = 480, height = 480, units = "px", pointsize = 12,
     compression = c("none", "rle", "lzw", "jpeg", "zip", "lzw+p", "zip+p"),
     bg = "white", res = NA, ..., family = "", restoreConsole = TRUE,
     type = c("cairo", "Xlib", "quartz"), antialias)

参数

filename

输出文件路径。如果字符串中包含 C 整数格式,则将替换页码(默认情况下)。 (根据平台的不同,结果应小于 PATH_MAX 个字符长,否则可能会被截断。有关更多详细信息,请参阅 postscript。)波浪线扩展在平台支持的情况下执行。如果出现错误,带有标记编码的输入将转换为本机编码。

width

设备的宽度。

height

设备的高度。

units

heightwidth 给出的单位。可以是 px (像素,默认值)、in (英寸)、cmmm

pointsize

绘制文本的默认磅值,解释为 res ppi 处的大点(1/72 英寸)。

bg

初始背景颜色:可以通过设置 par("bg") 来覆盖。

quality

JPEG 图像的‘quality’,以百分比表示。较小的值会提供更多的压缩,但也会导致图像质量下降更多。

compression

要使用的压缩类型。忽略 type = "quartz"

res

将记录在位图文件中的标称分辨率(以 ppi 为单位)(如果是正整数)。还用于默认值以外的units,并将点转换为像素。

...

仅适用于type = "Xlib",底层X11设备的附加参数,例如fontsfamily

对于类型 "cairo""quartz" ,可以提供 family 参数。请参阅 X11 帮助中的“Cairo 字体”部分。

对于类型 "cairo" ,可以提供 symbolfamily 参数。请参阅X11.options

type

字符串, "Xlib""quartz" (某些 macOS 版本)或 "cairo" 之一。后者仅在系统编译时支持 cairo 时才可用 - 否则将使用"Xlib"。默认值由 getOption("bitmapType") 设置 - “开箱即用”默认值是 "quartz""cairo"(如果可用),否则为 "Xlib"

antialias

对于 type = "cairo" ,给出用于字体和线条(但不填充)的抗锯齿类型(如果有)。请参阅X11。默认值由 X11.options 设置。同样对于 type = "quartz" ,除非 antialias = "none" ,否则使用抗锯齿函数。

细节

PNG 和 JPEG 格式的绘图可以轻松转换为许多其他位图格式,并且两者都可以在现代 Web 浏览器中显示。 PNG 格式是无损的,最适合线条图和色块。 JPEG 格式是有损的,但对于图像绘图等可能很有用。 BMP 是 Windows 上的标准格式。 TIFF 是 meta-format:tiff 编写的默认格式是无损的,并且存储未压缩的 RGB(以及适当的 alpha)值 - 此类文件被广泛接受,这是它们相对于 PNG 的主要优点。

png 支持透明背景:使用 bg = "transparent" 。 (并非所有 PNG 查看器都能正确渲染具有透明度的文件。)在 type = "Xlib" 变体中使用透明度时,会使用非常浅的灰色作为背景,因此如果在绘图中使用,则显示为透明。这允许使用不透明的白色,如示例中所示。 type = "cairo"type = "cairo-png"type = "quartz" 变体允许半透明颜色,包括在透明或半透明背景上。

类型为"cairo""quartz"tiff 支持半透明颜色,包括在透明或半透明背景上。压缩类型"zip"为“deflate (Adobe-style)”。压缩类型 "lzw+p""zip+p" 使用水平差分(“差分预测器”,TIFF 规范第 14 节)与压缩方法相结合,这对于 continuous-tone 图像(尤其是彩色图像)非常有效。

R可以在不支持这些设备的部分或全部类型的情况下进行编译:如果您尝试在不支持它们的系统上使用它们,则会报告此情况。为了type = "Xlib"除非 X11 显示器可供所有者使用,否则它们可能无法使用R过程。type = "cairo"需要 cairo 1.2 或更高版本。type = "quartz"使用quartz设备,因此仅在该设备所在的位置可用(在某些 macOS 版本上:请参阅capabilities("aqua"))。

默认情况下,文件中不记录任何分辨率(BMP 除外)。当没有记录时,观看者通常会假定标称分辨率为 72 ppi。由于 PNG 文件中的分辨率以像素/米为单位记录,因此报告的 ppi 值将略有变化。

对于使用以英寸为单位的尺寸(包括以点为单位的字体大小)的图形参数,使用的分辨率为res(如果未设置,则为 72 ppi)。

如果页面上的颜色少于 256 种,png 通常会使用调色板,否则记录 24 位 RGB 文件(如果使用 type = "cairo" 和非不透明颜色,则记录 32 位 ARGB 文件)。然而,type = "cairo-png" 使用 cairgraphics 的 PNG 后端,它永远不会使用调色板,并且通常会创建更大的 32 位 ARGB 文件 - 这可能更适合半透明颜色的专业用途。

Quartz-produced 具有透明背景的 PNG 和 TIFF 图用深灰色遮罩记录,该遮罩将显示在某些查看器中,包括 macOS 上的Preview

BMP 文件中的未知分辨率记录为 72 ppi。

绘图设备被打开:没有任何内容返回到R口译员。

警告

请注意,默认情况下,widthheight 值以像素为单位,而不是英寸。如果两者都低于 20,将发出警告。

如果您在其中一个设备上绘制多个页面,并且在 file 中不包含类似 %d 的序列号,则该文件将包含绘制的最后一页。

操作系统之间的差异

这些函数是三个或更多不同底层设备的接口。

  • 在 Windows 上,基于使用 Windows 的 GDI 调用绘制到隐藏屏幕的设备。

  • 在支持 X11 的平台上,绘制到隐藏的 X11 显示。

  • 在 macOS 上使用控制台时以及何时R使用 Apple 的 Quartz 绘图系统在适当的支持下进行编译。

  • 已编译了对 cairographics 的支持,在开罗表面上绘图。这可能使用本机平台对字体的支持,也可能使用fontconfig来支持各种字体格式。

支持的选项和产生的输出之间不可避免地存在差异。也许最重要的是对抗锯齿字体和半透明颜色的支持:使用基于 cairo 或 Quartz 的设备(如果可用)可能会获得最佳结果。

默认扩展名是‘.jpg' 和 '.tif' 在 Windows 上,以及 '.jpeg' 和 '.tiff’在其他地方。

惯例

本节介绍“R Internals”手册中规定的图形设备约定的实现。

  • 默认设备大小以像素为单位。

  • 字体大小以 res ppi 解释的大点为单位。

  • Windows 上的默认字体系列为 Arial,否则默认字体系列为 Helvetica。

  • 线宽以 1/96 英寸为单位(以 res ppi 解释),type = "Xlib"type = "windows" 至少为 1 个像素,type = "cairo" 为 0.01。

  • 对于 type = "Xlib"type = "windows" ,圆的最小半径为 1 像素。

  • 颜色由查看应用程序解释。

对于 type = "quartz" 请参阅 quartz 的帮助。

注意

对于type = "Xlib",这些设备基于X11 设备。使用的颜色模型将是在第一个基于 Xlib 的设备打开时(或所有此类设备关闭后的第一个)由 X11.options 设置的颜色模型。

例子

## these examples will work only if the devices are available
## and cairo or an X11 display or a macOS display is available.

## copy current plot to a (large) PNG file
## Not run: dev.print(png, file = "myplot.png", width = 1024, height = 768)

png(file = "myplot.png", bg = "transparent")
plot(1:10)
rect(1, 5, 3, 7, col = "white")
dev.off()

## will make myplot1.jpeg and myplot2.jpeg
jpeg(file = "myplot%d.jpeg")
example(rect)
dev.off()

作者

Guido Masarotto and Brian Ripley

参考

The PNG specification, https://www.w3.org/TR/png/.

The TIFF specification, https://www.iso.org/standard/34342.html. See also https://en.wikipedia.org/wiki/TIFF.

也可以看看

Devices , dev.print

capabilities查看此版本是否支持这些设备R, 而如果type = "cairo"支持。

bitmap 提供了一种以多种位图格式生成绘图的替代方法,该方法(不依赖于访问 UNIX 类似系统上的 X11 显示,但确实)依赖于安装 GhostScript。

相关用法


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