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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。