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


R postscript PostScript 图形


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

说明

postscript 启动图形设备驱动程序以生成PostScript 图形。

用法

postscript(file = if(onefile) "Rplots.ps" else "Rplot%03d.ps",
           onefile, family, title, fonts, encoding, bg, fg,
           width, height, horizontal, pointsize,
           paper, pagecentre, print.it, command,
           colormodel, useKerning, fillOddEven)

参数

file

给出文件路径的字符串。如果是 "" ,则输出将通过管道传输到参数 command 给出的命令。如果它的形式为 "|cmd" ,则输出将通过管道传输到 cmd 给出的命令。

要与 onefile = FALSE 一起使用,请提供 printf 格式,例如 "Rplot%03d.ps"(这种情况下的默认格式)。否则,该字符串不应包含 % :如果确实有必要,请在字符串中使用 %% 作为文件名中的 %。允许与 regular expression "%[#0 +=-]*[0-9.]*[diouxX]" 匹配的单个整数格式。

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

onefile

逻辑:如果为 true(默认值),则允许一个文件中包含多个数字。如果为 false,则生成包含每页页码的文件名,并使用 EPSF 标头且不使用 DocumentMedia 注释。默认为 TRUE

family

要使用的初始字体系列,通常作为字符串。请参阅“家庭”部分。默认为 "Helvetica"

title

要作为 Title 注释嵌入到文件中的标题字符串。默认为 "R Graphics Output"

fonts

指定附加的字符向量R字体系列的图形字体系列名称,其声明将包含在 PostScript 文件中,并且可与设备一起使用。请参阅下面的“家庭”。默认为NULL.

encoding

编码文件的名称。默认为 "default" 。后者被解释为

在 Unix 类系统上

作为 '"ISOLatin1.enc"’除非区域设置被识别为对应于使用 ISO 8859-{2,5,7,13,15} 或 KOI8-{R,U} 的语言。

在 Windows 上

作为 '"CP1250.enc"’(中欧),"CP1251.enc"(西里尔),"CP1253.enc"(希腊语)或"CP1257.enc"(波罗的海)如果这些代码页之一正在使用,否则‘"WinAnsi.enc"’(代码页 1252)。

该文件在‘编码’ 包的目录grDevices如果路径不包含路径分隔符。一个扩展".enc"可以省略。

bg

要使用的初始背景颜色。如果"transparent"(或任何其他非不透明颜色),则不绘制背景。默认为 "transparent"

fg

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

width , height

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

如果paper != "special"widthheight 小于0.1 或太大而无法提供0.5 英寸的总边距,则图形区域将重置为相应的纸张尺寸减去0.5。

horizontal

打印图像的方向是合乎逻辑的。默认为 true,即宽度小于高度的纸张尺寸的横向。

pointsize

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

paper

打印机中纸张的尺寸。选项是 "a4""letter" (或 "us" )、 "legal""executive" (并且这些可以大写)。另外,当参数 widthheight 指定纸张尺寸时,可以使用 "special"。进一步的选择是 "default"(默认值):如果选择此选项,则纸张尺寸将从选项 "papersize" 中获取(如果已设置),如果未设置或为空,则从 "a4" 中获取。

pagecentre

逻辑:设备区域应该位于页面中央吗?默认为 true。

print.it

逻辑:设备关闭时是否应该打印文件? (这仅适用于 file 是真实文件名的情况。)默认为 false。

command

用于‘printing’的命令。默认为 "default" ,即选项 "printcmd" 的值。长度限制为 2*PATH_MAX ,在 Unix 上通常为 8096 字节,在 Windows 上为 520 字节。最新的 Windows 系统可能配置为使用长路径,目前将此限制提高到 10000。

colormodel

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

useKerning

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

fillOddEven

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

细节

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

postscript 打开文件file,绘制任何请求的图形所需的PostScript 命令将写入该文件。然后可以在合适的设备上打印该文件以获得硬拷贝。

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

为单曲制作的后记R情节是 EPS (封装PostScript) 兼容,并且可以包含到其他文档中,例如,包含到 LaTeX 中,使用\includegraphics{<filename>}。为了以这种方式使用,您可能需要使用setEPS()将默认值设置为horizontal = FALSE, onefile = FALSE, paper = "special"。请注意,边界框用于设备区域:如果您发现绘图区域周围的空白过多,请通过以下方式减少图形区域的边距par(mar = ).

使用的大部分 PostScript 序言取自R字符向量.ps.prolog。这在输出中进行了标记,并且可以通过更改该向量来更改。 (这仅建议PostScript专家:标准版本位于namespace:grDevices.)

PostScript 器件有一个默认系列,用户可以通过以下方式设置family。如果在绘制到 PostScript 设备时要使用其他字体系列,则必须在创建设备时声明这些字体系列fonts;该参数的字体系列名称是R图形字体系列名称(请参阅文档postscriptFonts)。

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

当背景颜色完全透明(初始默认值)时,生成的PostScript不会绘制背景。几乎所有PostScript观看者都会使用白色画布,因此视觉效果就像背景是白色的一样。但在彩色纸上打印时,情况并非如此。

家庭

字体系列是涵盖由图形参数 par(font = ) 或网格参数 gpar(fontface = ) 选择的五个字体(通常为普通、粗体、斜体、bold-italic 和符号)的字体集合。字体系列可以通过 family 参数指定为设备的初始/默认字体系列,也可以在设备打开后通过图形参数 par(family = ) 或网格参数 gpar(fontfamily = ) 指定。打开设备时,必须在 fonts 参数中指定除初始系列之外将使用的系列。

字体系列是通过调用 postscriptFonts 声明的。

参数 family 指定要使用的初始/默认字体系列。在正常使用中,它是 "AvantGarde""Bookman""Courier""Helvetica""Helvetica-Narrow""NewCenturySchoolbook""Palatino""Times" 之一,并指标准 Adobe PostScript字体系列所有常见 PostScript 设备中包含(或克隆)的名称。

许多 PostScript 模拟器(包括基于 ghostscript 的模拟器)使用这些字体的 URW 等效项,即 "URWGothic""URWBookman""NimbusMon""NimbusSan""NimbusSanCond""CenturySch""URWPalladio""NimbusRom" 。如果您的 PostScript 设备使用 URW 字体,您将通过使用这些名称来访问更多字符和更合适的指标。为了使这些更容易记住,还支持"URWHelvetica" == "NimbusSan""URWTimes" == "NimbusRom"

另一种类型的家族使用东亚语言的 CID-keyed 字体 - 请参阅 postscriptFonts

family参数通常是命名字体系列的字符串,但是由Type1FontCIDFont也被接受。为了与早期版本兼容R,初始族也可以指定为四个或五个 afm 文件的向量。

注意R不嵌入 PostScript 输出中使用的字体:请参阅embedFonts寻求实用程序来帮助做到这一点。

查看器和嵌入应用程序经常用字体替换系列中指定的字体,并且替换的字体规格通常会略有不同。 useKerning = TRUE 使用目标系列的字距调整来分隔字符串中的字母:这可能看起来比 useKerning = FALSE 更难看。

编码

编码说明了使用哪些字形来显示字符代码(范围为 0-255)。最常见的R使用 ISOLatin1 编码,示例为text都在该编码中。但是,运行的机器上使用的编码R可能会有所不同,并且通过使用encoding参数字形可以与使用的编码相匹配。这对于欧洲和西里尔语言来说已经足够了,但对于东亚语言来说就不够了。对于后者,使用复合 CID 字体。这些字体对于其他语言很有用:例如它们可能包含希腊字形。 (本节的其余部分仅适用于不使用 CID 字体的情况。)

如果仅使用 ASCII 字符(代码 32-126)作为所有编码(除了"TeXtext")同意该范围。有些编码也是 ISOLatin1 的超集。但是,如果重音字符和特殊字符未按您的预期显示,您可能需要更改编码。提供了一些其他编码R"WinAnsi.enc""MacRoman.enc"对应于 Windows 和经典 Mac OS 上通常使用的编码(至少 Adobe),并且"PDFDoc.enc"是 Unicode 编码(PDF 标准)的前 256 个字符。还有编码"ISOLatin2.enc","CP1250.enc","ISOLatin7.enc"(ISO 8859-13),"CP1257.enc", 和"ISOLatin9.enc"(ISO 8859-15),"Cyrillic.enc"(ISO 8859-5),"KOI8-R.enc","KOI8-U.enc","CP1251.enc","Greek.enc"(ISO 8859-7)和"CP1253.enc"。请注意,这些编码中的许多字形不属于与标准系列相对应的字体。 (除了 Courier、Helvetica 和 Times 之外,Adobe 的字体只涵盖 Latin-1,而 URW 的字体还涵盖 Latin-2、Latin-7、Latin-9 和西里尔字母,但不包含希腊语。Adobe 的例外情况涵盖拉丁字符套,但不是欧元。)

如果您指定编码,您有责任确保 PostScript 字体包含所使用的字形。这里的一个问题是欧元符号,它位于 WinAnsi 和 MacRoman 编码中,但很可能不在 PostScript 字体中。 (它位于 URW 变体中;它不在提供的 Adobe Font Metric 文件中。)

有一个例外。字符 45 ( "-" ) 始终设置为负号(其在 Adobe ISOLatin1 中的值),即使它在其他编码中是连字符。在所有拉丁语编码、西里尔语和希腊语中,连字符可用作字符 173(八进制 0255)。 (这可以在 UTF-8 语言环境中输入为 "\uad"。)字形 39 和 96 的帐户存在一些差异:提供的编码(CP1250 和 CP1251 除外)将它们视为 ‘quoteright’ 和 ‘quoteleft’(而不是分别高于 ‘quotesingle’/‘acute’ 和 ‘grave’),如 Adobe 文档中所示。

TeX字体

TeX 传统上使用 Computer Modern 等字体,这些字体的编码方式相当不同,采用 7 位编码。此编码可以由 encoding = "TeXtext.enc" 指定,注意 ASCII 字符 < > \ _ { } 在这些字体中不可用。

提供的系列 "ComputerModern""ComputerModernItalic" 使用此编码,并且仅支持 postscript (而不是 pdf )。它们旨在与 TeX CM 字体的 Type 1 版本一起使用。通常可以将此类输出包含在 TeX 或 LaTeX 中,前提是它是使用 dvips -Ppfb -j0 或系统上的等效项进行处理的。 (-j0 关闭字体子集设置。)使用family = "ComputerModern" 时,使用的斜体/bold-italic 字体是倾斜字体(cmsl10cmbxsl10)。要改用文本斜体字体,请设置 family = "ComputerModernItalic"

这些系列使用 TeX 数学斜体和符号字体来全面但不完整地覆盖其他系列中 Adobe 符号字体所涵盖的字形。这是通过 special-casing 从提供的‘生成的 postscript 代码来实现的CM_symbol_10.afm’。

颜色型号

默认颜色模型 ("srgb") 是 sRGB。

替代方案 "srgb+gray" 使用 sRGB 作为颜色,但使用表示为灰度的纯灰色(包括黑色和白色)(这会导致文件更小,并且对于某些打印机驱动程序来说可能是有利的)。相反,它的文件在某些查看器上渲染速度可能会慢得多,并且涉及灰色或白色的颜色渐变可能会出现明显的不连续性。

其他可能性是仅使用灰度(并将其他颜色转换为亮度)的 "gray" (或 "grey" )和 "cmyk" 。使用从 sRGB 到 CMYK 的最简单的转换 (https://en.wikipedia.org/wiki/CMYK_color_model#Mapping_RGB_to_CMYK),并且光栅图像以 RGB 输出。

为向后兼容提供的颜色模型是"rgb"(即RGB+灰度)和"rgb-nogray"它使用未校准的 RGB(如R2.13.0 之前)。这些会导致文件稍小,渲染速度可能会更快,但确实依赖于正确校准的查看器。

打印

可以通过 postscript 以两种方式打印后记图。

  1. 设置print.it = TRUE 会导致在设备关闭时使用参数"file" 调用参数command 中给出的命令。请注意,绘图文件不会被删除,除非 command 安排删除它。

  2. file = ""或者file = "|cmd"可用于使用管道进行打印。打开命令失败可能会报告给终端,但不会报告给终端R,在这种情况下通过关闭设备dev.off立即地。

在 Windows 上默认"printcmd"为空,如果print.it = TRUE用来。将 PostScript 文件假脱机到打印机的合适命令可以在‘RedMon’ 套房可从http://pages.cs.wisc.edu/~ghost/index.html。该命令将在最小化窗口中运行。 GSView 4.x 提供‘gsprint.exe’这可能更方便(它需要 Ghostscript 版本 6.50 或更高版本)。

惯例

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

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

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

  • 默认字体系列是 Helvetica。

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

  • 任何半径的圆都是允许的。

  • 颜色默认指定为 sRGB。

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

光栅图像目前仅限于不透明颜色。

注意

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

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

例子

require(graphics)
## Not run: 
# open the file "foo.ps" for graphics output
postscript("foo.ps")
# produce the desired graph(s)
dev.off()              # turn off the postscript device

## On Unix-alikes only:
postscript("|lp -dlw")
# produce the desired graph(s)
dev.off()              # plot will appear on printer

## On Windows:
options(printcmd = 'redpr -P"\\printhost\lw"')
postscript(file = tempfile("Rps."), print.it = TRUE)
# produce the desired graph(s)
dev.off()              # send plot file to the printer
## alternative using GSView 4.x :
options(printcmd = '/GhostGum/gsview/gsprint -query')


# for URW PostScript devices
postscript("foo.ps", family = "NimbusSan")

## for inclusion in Computer Modern TeX documents, perhaps
postscript("cm_test.eps", width = 4.0, height = 3.0,
           horizontal = FALSE, onefile = FALSE, paper = "special",
           family = "ComputerModern", encoding = "TeXtext.enc")
## The resultant postscript file can be used by dvips -Ppfb -j0.

## To test out encodings, you can use
TestChars <- function(encoding = "ISOLatin1", family = "URWHelvetica")
{
    postscript(encoding = encoding, family = family)
    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.  We use URW to get a complete enough
## set of font metrics.
TestChars()
TestChars("ISOLatin2")
TestChars("WinAnsi")

## End(Not run)

作者

Support for Computer Modern fonts is based on a contribution by Brian D'Urso durso@hussle.harvard.edu.

参考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

postscriptFontsDevicescheck.options 均从 ps.optionspostscript 调用。

cairo_ps 用于另一个可以生成 PostScript 的设备。

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

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

相关用法


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