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


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