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


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