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


R pdf PDF图形设备


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

说明

pdf 启动图形设备驱动程序以生成 PDF 图形。

用法

pdf(file = if(onefile) "Rplots.pdf" else "Rplot%03d.pdf",
    width, height, onefile, family, title, fonts, version,
    paper, encoding, bg, fg, pointsize, pagecentre, colormodel,
    useDingbats, useKerning, fillOddEven, compress)

参数

file

给出文件路径的字符串。如果它的形式为 "|cmd" ,则输出将通过管道传输到 cmd 给出的命令。如果是 NULL ,则不会创建外部文件(实际上,不会进行绘图),但仍可能会查询设备(例如,查询文本的大小)。

为了与 onefile = FALSE 一起使用,请提供 C 整数格式,例如 "Rplot%03d.pdf"(这种情况下的默认值)。 (有关更多详细信息,请参阅postscript。)

波形符扩展(参见path.expand)已完成。带有标记编码的输入将转换为本机编码,否则会给出错误。

width , height

图形区域的宽度和高度(以英寸为单位)。默认值为7

onefile

逻辑:如果为 true(默认值),则允许一个文件中包含多个数字。如果为 false,则生成一个文件,其名称包含每页的页码。默认为 TRUE ,如果 file 是管道,则强制为 true。

family

要使用的字体系列,请参阅postscript。默认为 "Helvetica"

title

要嵌入为“的标题字符串⁠/标题⁠’ 文件中的字段。默认为"R Graphics Output".

fonts

指定的字符向量R将包含在 PDF 文件中的其他字体的图形字体系列名称。默认为NULL.

version

说明查看输出所需的 PDF 版本的字符串。这是最小值,如有必要,将会增加(并发出警告)。默认为 "1.4" ,但请参阅“详细信息”。

paper

目标纸张尺寸。选项包括 "a4""letter""legal" (或 "us" )和 "executive" (并且这些可以大写),或用于旋转的 "a4r""USr" (‘landscape’)。默认为 "special" ,这意味着 widthheight 指定纸张尺寸。进一步的选择是"default";如果选择此选项,则纸张尺寸将从选项 "papersize" 中获取(如果已设置),如果未设置或为空,则从 "a4" 中获取。默认为 "special"

encoding

编码文件的名称。有关详细信息,请参阅postscript。默认为 "default"

bg

要使用的初始背景颜色。默认为 "transparent"

fg

要使用的初始前景色。默认为 "black"

pointsize

要使用的默认磅值。严格来说,以 bp 为单位,即 1/72 英寸,但大约以磅为单位。默认为 12

pagecentre

逻辑:设备区域应该位于页面中央吗? - 仅与 paper != "special" 相关。默认为 TRUE

colormodel

说明颜色模型的字符串:当前允许的值为 "srgb""gray" (或 "grey" )和 "cmyk" 。默认为 "srgb" 。请参阅“颜色模型”部分。

useDingbats

合乎逻辑的。小圆圈应该通过 Dingbats 字体渲染吗?默认为 FALSE 。如果是 TRUE ,这可以产生更小、更好的输出,但在损坏的 PDF 查看器中可能会出现字体显示问题:尽管此字体是保证在所有 PDF 查看器中可用的 14 种字体之一,但并不总是兑现这一保证。

对于 Unix 类用户(包括 macOS),请参阅“注释”以了解针对某些查看者的可能修复方法。

useKerning

合乎逻辑的。设置文本和计算字符串宽度时是否应该包含字距调整?默认为 TRUE

fillOddEven

逻辑控制多边形填充模式:有关详细信息,请参阅polygon。默认为 FALSE

compress

合乎逻辑的。是否应该使用 Flate 压缩生成 PDF 流?默认为 TRUE

细节

file 之外的所有参数均默认为 pdf.options() 给出的值。最终默认值在参数部分引用。

pdf() 打开文件file,绘制任何请求的图形所需的 PDF 命令将发送到该文件。

file参数被解释为 C 整数格式,如所使用的sprintf,带有整数参数的页码。默认给出文件‘Rplot001.pdf”,...,“Rplot999.pdf', 'Rplot1000.pdf’,……

family 参数可用于指定 PDF-specific 字体系列作为设备的初始/默认字体。如果要使用其他字体系列,则应将它们包含在 fonts 参数中。

如果设备无关R指定图形字体系列(例如,通过par(family = )在图形包中),PDF 设备利用 PostScript 字体映射来转换R图形字体系列到 PDF-specific 字体系列说明。 (请参阅文档pdfFonts.)

此设备不会在 PDF 文件中嵌入字体,因此只需简单地使用到可假定在任何 PDF 查看器中可用的字体系列的映射即可: "Times" (等效于 "serif" )、"Helvetica" (等效于"sans" )和 "Courier" (相当于 "mono" )。可能会指定其他系列,但用户有责任确保这些字体在系统上可用,并且可能需要第三方软件(例如 Ghostscript)嵌入这些字体,以便 PDF 可以包含在其他文档中(例如,LaTeX):请参阅embedFonts。针对 postscript 说明的基于 URW 的系列可以与查看器一起使用,具体取决于平台:

在 Unix 类系统上

查看器设置为使用 URW 字体,这对于基于 xpdf 或 Ghostscript 的字体来说很常见。

在 Windows 上

GSView 等使用 URW 字体的查看器。

由于embedFonts 使用 Ghostscript,它应该能够嵌入基于 URW 的系列以供其他查看器使用。

参看postscript有关编码的详细信息,因为内部代码在驱动程序之间共享。本机 PDF 编码在文件‘中给出PDFDoc.enc’。

生成的 PDF 相当简单,每个页面都表示为单个流(默认情况下经过压缩,并且可能引用光栅图像)。这R图形模型不区分驱动程序接口级别的图形对象。

version 参数声明生成的 PDF 版本。使用压缩时版本必须至少为 1.2,为了理解半透明输出,版本必须至少为 1.4,如果要使用 CID 字体,版本必须至少为 1.3:如果使用任何这些函数,版本号将增加(带有警告)。 (PDF 1.4 于 2001 年首次由 Acrobat 5 支持;当前查看器不太可能不支持它。)

par(lwd = ) 控制的线宽是 1/96 英寸的倍数。允许小于 1 的倍数。 pch = "."cex = 1 对应于边长为 1/72 英寸的正方形,这也是 "cra" 等图形参数假定的 ‘pixel’ 尺寸。

paper参数设置‘⁠/媒体盒⁠' 文件中的条目,默认为width经过height。如果它设置为除"special",指定大小的设备区域(默认情况下)以纸张大小给定的矩形为中心:如果width或者height小于0.1或者太大而无法提供 0.5 英寸的总边距,则将其重置为相应的纸张尺寸负 0.5。因此,如果您想要默认行为postscript采用pdf(paper = "a4r", width = 0, height = 0)将设备区域置于横向 A4 页面的中心,边距为 0.25 英寸。

当背景颜色完全透明(初始默认值)时,生成的 PDF 不会绘制背景。大多数 PDF 查看器将使用白色画布,因此视觉效果就像背景是白色的一样。但在彩色纸上打印时,情况并非如此。

颜色型号

默认颜色模型 ("srgb") 是 sRGB。模型 "gray" (或 "grey" )使用感知亮度(偏向绿色)将 sRGB 颜色映射到灰度。 "cmyk" 以 CMYK 色彩空间输出。使用从 sRGB 到 CMYK 的最简单的转换 (https://en.wikipedia.org/wiki/CMYK_color_model#Mapping_RGB_to_CMYK),并且光栅图像以 RGB 输出。

模型也可向后兼容"rgb"它使用未校准的 RGB 并对应于中使用该名称的模型R2.13.0 之前。某些查看器在该色彩空间中渲染某些绘图的速度可能比在 sRGB 中更快,并且绘图文件会更小。

惯例

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

  • 默认设备尺寸为 7 平方英寸。

  • 字体大小以大点为单位。

  • 默认字体系列是 Helvetica。

  • 线宽为 1/96 英寸的倍数,最小强制为 0.01。

  • 任何半径的圆都是允许的。如果 useDingbats = TRUE ,则使用 Dingbats 字体中的字符 108 渲染半径小于 10 个大点的不透明圆:所有半透明和较大的圆对每个象限使用贝塞尔曲线。

  • 颜色默认指定为 sRGB。

当线宽非常小时,线型可能会被迫为实线。

打印

除了在 Windows 上之外,还可以通过类似的方式直接从 pdf 进行打印(这适用于 CUPS 打印系统):

    pdf("|lp -o landscape", paper = "a4r")

这会强制 onefile = TRUE

注意

如果您绘制了任何排版字形(请参阅glyphInfo),那么强烈建议您使用embedGlyphs来嵌入相关字体。

注意

如果您发现 PDF 输出存在问题,请记住,问题更有可能出现在您的查看器中,而不是出现在R。如果可能的话,尝试使用其他查看器。查看器出现错误的症状是图像图上出现明显的网格(如果可以的话,请关闭查看器中的图形抗锯齿函数)以及文本中丢失或不正确的字形(查看器默默地进行字体替换)。

不幸的是,大多数 Linux 和 macOS 系统上的默认查看器都存在这些问题,并且没有明显的方法来关闭图形抗锯齿。

Acrobat Reader 不使用指定的字体,而是从 multiple-master 字体模拟它们。这可以从不精确的字符居中看出,例如 Helvetica 中的乘号和除号。可以通过尽可能嵌入字体来避免这种情况。大多数其他查看器都会替换字体,例如标准 Helvetica 和 Times 字体的 URW 字体,这些字体通常与真实字体具有不同的字体规格。

Acrobat Reader 可以通过“字体包”进行扩展,并且需要这些字体包才能充分使用 Latin-1 以外的编码(尽管可以根据需要提供下载)。

在一些类 Unix 系统上:

如果useDingbats = TRUE, 默认绘图字符pch = 1在某些 PDF 查看器中错误地显示为"q"特点。 (这些似乎是基于‘⁠波普勒⁠’PDF渲染库)。这可能是由于字体名称与系统使用的字体名称的映射不正确或不完整造成的。将以下行添加到‘〜/.fonts.conf' 或者 '/etc/fonts/local.conf” 可能会绕过这个问题,尽管这个问题在受影响的系统上已经得到了很大程度的纠正。

<fontconfig>
<alias binding="same">
  <family>ZapfDingbats</family>
  <accept><family>Dingbats</family></accept>
</alias>
</fontconfig>

X11 帮助的“开罗字体”部分给出了使用 ‘fontconfig’ 的查看器符号字体问题的一些进一步解决方法。

在 Windows 上:

TeXworks PDF 查看器是无法正确显示 Dingbats(例如 pch = 1 使用)的查看器之一。在其他平台上,出现的问题是输出不正确,而在 Windows 上,点被默默地忽略了:但是最近的版本似乎设法显示 Dingbats。

Firefox 中包含的 pdf.js 查看器中存在一个不同的字体错误:将 Dingbats 映射到符号字体,因此将 pch = 1 等符号显示为 lambda。

例子


## Test function for encodings
TestChars <- function(encoding = "ISOLatin1", ...)
{
    pdf(encoding = encoding, ...)
    par(pty = "s")
    plot(c(-1,16), c(-1,16), type = "n", xlab = "", ylab = "",
         xaxs = "i", yaxs = "i")
         title(paste("Centred chars in encoding", encoding))
    grid(17, 17, lty = 1)
    for(i in c(32:255)) {
        x <- i %% 16
        y <- i %/% 16
        points(x, y, pch = i)
    }
    dev.off()
}
## there will be many warnings.
TestChars("ISOLatin2")
## this does not view properly in older viewers.
TestChars("ISOLatin2", family = "URWHelvetica")
## works well for viewing in gs-based viewers, and often in xpdf.

也可以看看

pdfFontspdf.optionsembedFontsglyphInfoDevicespostscript

cairo_pdf 和(仅限 macOS)quartz 适用于其他可以生成 PDF 的设备。

有关字体系列和编码,尤其是处理非 Latin-1 编码中的文本和嵌入字体的更多详细信息,请参阅

保罗·默雷尔和布莱恩·里普利 (2006)。 “PostScript 和 PDF 图形中的非标准字体。” R新闻,6(2),41-47。https://www.r-project.org/doc/Rnews/Rnews_2006-2.pdf.

相关用法


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