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


R contour 显示轮廓


R语言 contour 位于 graphics 包(package)。

说明

创建等高线图,或将等高线添加到现有图。

用法

contour(x, ...)

## Default S3 method:
contour(x = seq(0, 1, length.out = nrow(z)),
        y = seq(0, 1, length.out = ncol(z)),
        z,
        nlevels = 10, levels = pretty(zlim, nlevels),
        labels = NULL,
        xlim = range(x, finite = TRUE),
        ylim = range(y, finite = TRUE),
        zlim = range(z, finite = TRUE),
        labcex = 0.6, drawlabels = TRUE, method = "flattest",
        vfont, axes = TRUE, frame.plot = axes,
        col = par("fg"), lty = par("lty"), lwd = par("lwd"),
        add = FALSE, ...)

参数

x, y

测量 z 中的值的网格线位置。这些必须按升序排列。默认情况下,使用 0 到 1 之间的等距值。如果 xlist ,则其组件 x$xx$y 分别用于 xy 。如果列表具有组件 z ,则该组件用于 z

z

包含要绘制的值的矩阵(允许 NA )。请注意,为方便起见,可以使用x 代替z

nlevels

当未提供 levels 时所需的轮廓级别数。

levels

绘制等高线的级别的数字向量。

labels

给出轮廓线标签的向量。如果 NULL 则级别用作标签,否则由 as.character 强制。

labcex

cex 用于轮廓标记。这是绝对大小,而不是 par("cex") 的倍数。

drawlabels

合乎逻辑的。如果 TRUE 则对轮廓进行标记。

method

指定标签所在位置的字符串。可能的值为 "simple""edge""flattest" (默认值)。请参阅“详细信息”部分。

vfont

如果 NULL ,则当前字体系列和字体用于轮廓标签。如果字符向量的长度为 2,则 Hershey 矢量字体将用于轮廓标签。矢量的第一个元素选择字体,第二个元素选择字体索引(有关更多信息,请参阅text)。在具有高质量文本旋转的图形设备上,默认值为NULL,否则为c("sans serif", "plain")

xlim, ylim, zlim

绘图的 x-、y- 和 z-limits。

axes, frame.plot

指示是否应绘制轴或框的逻辑,请参阅plot.default

col

绘制线条的颜色。

lty

所绘制线条的线条类型。

lwd

所绘制线条的线宽。

add

合乎逻辑的。如果是 TRUE ,则添加到当前绘图。

...

plot.windowtitleAxisbox 的附加参数,通常为 graphical parameters 例如 cex.axis

细节

contour是一个通用函数,在基类中只有一个默认方法R.

在等高线上定位标签的方法是"simple"(在图的边绘制,覆盖等高线),"edge"(在图的边绘制,嵌入等高线中,没有标签重叠)和"flattest"(在轮廓的最平坦部分上绘制,嵌入轮廓线中,没有标签重叠)。第二个和第三个可能不会在每条轮廓线上绘制标签。

有关矢量字体的信息,请参阅 textHershey 的帮助。

请注意,contourz 矩阵解释为 f(x[i], y[j]) 值表,因此 x 轴对应于行号,y 轴对应于列号,第 1 列位于底部,即 90 度计数器传统文本布局的顺时针旋转。

向量(长度为 ) colltylwd 沿着 levels 应用并回收,请参阅示例。

或者,使用 lattice 包中的 contourplot,其中 formula 表示法允许使用相同长度的向量 xyz

对轴和框架的控制有限,因为参数 collwdlty 指的是轮廓线(而不是一般的 graphical parameters )。要进行更多控制,请向绘图添加等值线,或向等值线图添加轴和框架。

例子

require(grDevices) # for colours
x <- -6:16
op <- par(mfrow = c(2, 2))
contour(outer(x, x), method = "edge", vfont = c("sans serif", "plain"))
z <- outer(x, sqrt(abs(x)), FUN = `/`)
image(x, x, z)
contour(x, x, z, col = "pink", add = TRUE, method = "edge",
        vfont = c("sans serif", "plain"))
contour(x, x, z, ylim = c(1, 6), method = "simple", labcex = 1,
        xlab = quote(x[1]), ylab = quote(x[2]))
contour(x, x, z, ylim = c(-6, 6), nlevels = 20, lty = 2, method = "simple",
        main = "20 levels; \"simple\" labelling method")
par(op)

## Passing multiple colours / lty / lwd :
op <- par(mfrow = c(1, 2))
z <- outer(-9:25, -9:25)
## Using default levels <- pretty(range(z, finite = TRUE), 10),
##  the first and last of which typically are *not* drawn:
(levs <- pretty(z, n=10)) # -300 -200 ... 600 700
contour(z, col = 1:4)
## Set levels explicitly; show that 'lwd' and 'lty' are recycled as well:
contour(z, levels=levs[-c(1,length(levs))], col = 1:5, lwd = 1:3 *1.5, lty = 1:3)
par(op)

## Persian Rug Art:
x <- y <- seq(-4*pi, 4*pi, length.out = 27)
r <- sqrt(outer(x^2, y^2, `+`))
opar <- par(mfrow = c(2, 2), mar = rep(0, 4))
for(f in pi^(0:3))
  contour(cos(r^2)*exp(-r/f),
          drawlabels = FALSE, axes = FALSE, frame.plot = TRUE)

rx <- range(x <- 10*1:nrow(volcano))
ry <- range(y <- 10*1:ncol(volcano))
ry <- ry + c(-1, 1) * (diff(rx) - diff(ry))/2
tcol <- terrain.colors(12)
par(opar); opar <- par(pty = "s", bg = "lightcyan")
plot(x = 0, y = 0, type = "n", xlim = rx, ylim = ry, xlab = "", ylab = "")
u <- par("usr")
rect(u[1], u[3], u[2], u[4], col = tcol[8], border = "red")
contour(x, y, volcano, col = tcol[2], lty = "solid", add = TRUE,
        vfont = c("sans serif", "plain"))
title("A Topographic Map of Maunga Whau", font = 4)
abline(h = 200*0:4, v = 200*0:4, col = "lightgray", lty = 2, lwd = 0.1)

## contourLines produces the same contour lines as contour
plot(x = 0, y = 0, type = "n", xlim = rx, ylim = ry, xlab = "", ylab = "")
u <- par("usr")
rect(u[1], u[3], u[2], u[4], col = tcol[8], border = "red")
contour(x, y, volcano, col = tcol[1], lty = "solid", add = TRUE,
        vfont = c("sans serif", "plain"))
line.list <- contourLines(x, y, volcano)
invisible(lapply(line.list, lines, lwd=3, col=adjustcolor(2, .3)))
par(opar)

参考

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

也可以看看

options("max.contour.segments") 用于单个轮廓线的最大复杂度。

contourLinesfilled.contour 用于 color-filled 轮廓, contourplot (和 levelplot )来自包 lattice 。此外,image 和图形演示可以作为 demo(graphics) 调用。

相关用法


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