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


R image 顯示彩色圖像


R語言 image 位於 graphics 包(package)。

說明

創建彩色網格或 gray-scale 矩形,其顏色對應於 z 中的值。這可用於顯示三維或空間數據(也稱為圖像)。這是一個通用函數。

注意:網格默認繪製為一組矩形;請參閱 useRaster 參數將網格繪製為光柵圖像。

函數 hcl.colors 提供了廣泛的順序調色板,適合顯示有序數據,n 給出了所需的顏色數量。

用法

image(x, ...)

## Default S3 method:
image(x, y, z, zlim, xlim, ylim,
      col = hcl.colors(12, "YlOrRd", rev = TRUE),
      add = FALSE, xaxs = "i", yaxs = "i", xlab, ylab,
      breaks, oldstyle = FALSE, useRaster, ...)

參數

x , y

測量 z 中的值的網格線位置。這些必須是有限的、非缺失的並且按(嚴格)升序排列。默認情況下,使用 0 到 1 之間的等距值。如果 xlist ,則其組件 x$xx$y 分別用於 xy 。如果列表具有組件 z ,則該組件用於 z

z

包含要繪製的值的數字或邏輯矩陣(允許 NA )。請注意,為方便起見,可以使用x 代替z

zlim

應繪製顏色的最小和最大 z 值,默認為 z 有限值的範圍。每種給定的顏色都將用於對該範圍的等距間隔進行著色。間隔的中點覆蓋了範圍,因此將繪製剛好超出範圍的值。

xlim , ylim

繪製的 xy 值的範圍,默認為 xy 的範圍。

col

顏色列表,例如由 hcl.colorsgray.colors 或類似函數生成的顏色列表。

add

邏輯性;如果 TRUE ,添加到當前繪圖(並忽略以下四個參數)。這很少有用,因為 image ‘paints’ 在現有圖形上。

xaxs , yaxs

x 和 y 軸的樣式。默認"i" 適用於圖像。請參閱par

xlab , ylab

每個字符串給出 x 和 y 軸的標簽。默認為 xy 的“調用名稱”,如果未指定,則默認為 ""

breaks

顏色的一組有限數字斷點:必須比顏色多一個斷點,並且按遞增順序排列。未排序的向量將被排序,並帶有警告。

oldstyle

合乎邏輯的。如果為 true,則顏色間隔的中點等距,並且 zlim[1]zlim[2] 被視為中點。默認值是在限製之間具有相等長度的顏色間隔。

useRaster

邏輯性;如果TRUE 使用位圖光柵來繪製圖像而不是多邊形。在這種情況下,網格必須是規則的,否則會出現錯誤。對於未指定時的行為,請參閱“詳細信息”。

...

plotgraphical parameters 也可以作為參數傳遞給此函數,繪圖縱橫比 aspaxes 也可以(請參閱 plot.window )。

細節

x 的長度應等於 nrow(z)+1nrow(z) 。在第一種情況下,x 指定單元格之間的邊界:在第二種情況下,x 指定單元格的中點。類似的推理適用於 y 。可能隻有指定等距網格的中點才有意義。如果僅指定一行或一列以及長度為一的 xy ,則相應方向的整個用戶區域將被填充。對於對數 xy 軸,必須指定單元格之間的邊界。

與缺失值相對應的矩形不會被繪製(因此是透明的,並且(除非 add = TRUE )par("bg") 中繪製的默認背景將顯示出來,如果是透明的,則將看到畫布顏色)。

如果指定了breaks,則不使用zlim,並且使用的算法遵循cut,因此區間在右側封閉,在左側開放,除了兩端封閉的最低區間外。

軸(繪製的位置)使用 xlimylim 類(因此默認情況下使用 xy 類):這意味著例如日期會被標記為這樣。

請注意,imagez 矩陣解釋為 f(x[i], y[j]) 值表,因此 x 軸對應於行號,y 軸對應於列號,第 1 列位於底部,即 90 度計數器矩陣的傳統印刷布局的順時針旋轉。

使用 useRaster = TRUE 可以更有效地渲染規則網格上的大型 z 圖像,並且可以防止罕見的抗鋸齒偽影,但可能並非所有圖形設備都支持。某些不支持半透明顏色的設備(例如 postscriptX11(type = "Xlib") )可能會以白色而不是透明的形式發出缺失值,並且光柵圖像的大小可能存在限製。 (windows() 設備的用戶在遠程桌麵下報告了光柵圖像渲染問題,至少在其默認設置下是如此。)

在此選項下,PDF 和PostScript 中的圖形文件可以小得多。

如果未指定 useRaster,則當 getOption("preferRaster") 為 true、網格是規則的、dev.capabilities("rasterImage")$rasterImage"yes""non-missing" 並且沒有缺失值時,使用光柵圖像。

注意

最初基於 Thomas Lumley 的函數。

例子

require("grDevices") # for colours
x <- y <- seq(-4*pi, 4*pi, length.out = 27)
r <- sqrt(outer(x^2, y^2, `+`))
image(z = z <- cos(r^2)*exp(-r/6), col = gray.colors(33))
image(z, axes = FALSE, main = "Math can be beautiful ...",
      xlab = expression(cos(r^2) * e^{-r/6}))
contour(z, add = TRUE, drawlabels = FALSE)

# Visualize as matrix.  Need to transpose matrix and then flip it horizontally:
tf <- function(m) t(m)[, nrow(m):1]
imageM <- function(m, grid = max(dim(m)) <= 25, asp = (nrow(m)-1)/(ncol(m)-1), ...) {
    image(tf(m), asp=asp, axes = FALSE, ...)
    mAxis <- function(side, at, ...) # using 'j'
        axis(side, at=at, labels=as.character(j+1L), col="gray", col.axis=1, ...)
    n <- ncol(m); n1 <- n-1L; j <- 0L:n1; mAxis(1, at= j/n1)
    if(grid) abline(v = (0:n - .5)/n1, col="gray77", lty="dotted")
    n <- nrow(m); n1 <- n-1L; j <- 0L:n1; mAxis(2, at=1-j/n1, las=1)
    if(grid) abline(h = (0:n - .5)/n1, col="gray77", lty="dotted")
}
(m <- outer(1:5, 1:14))
imageM(m, main = "image(<5 x 14 matrix>)   with rows and columns")
imageM(volcano)

# A prettier display of the volcano
x <- 10*(1:nrow(volcano))
y <- 10*(1:ncol(volcano))
image(x, y, volcano, col = hcl.colors(100, "terrain"), axes = FALSE)
contour(x, y, volcano, levels = seq(90, 200, by = 5),
        add = TRUE, col = "brown")
axis(1, at = seq(100, 800, by = 100))
axis(2, at = seq(100, 600, by = 100))
box()
title(main = "Maunga Whau Volcano", font.main = 4)

也可以看看

filled.contourheatmap 看起來更好(但模塊化程度較低),contourimage lattice 等效項是 levelplot

hcl.colorsgray.colorshclhsvpar

dev.capabilities 查看當前設備是否支持useRaster = TRUE

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Display a Color Image。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。