當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。