02.07.2013 Views

现代统计图形 - 科学网—博客

现代统计图形 - 科学网—博客

现代统计图形 - 科学网—博客

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

5.8 等高图 83<br />

都必须展示在静态介质上(如书籍、论文等),我们不可能在纸面上拖动鼠<br />

标对图形进行交互式操作,因此,我们需要等高图这样一种以二维形式展<br />

示三维数据的工具。<br />

首先我们需要理解等高图所展示数据的形式,因为它与我们想象的三<br />

维数据有所不同:并非三个数值向量,而是两个数值向量x、y和一个相应<br />

的矩阵z。我们不妨将数据的形式想象为一座山峰,两个数值向量分别是横<br />

向和纵向的位置(如经纬度),第三维数据是每一种横纵向位置点组合上的<br />

高度,而横纵交叉组合之后形成的是一个“网格”,矩阵z则是这个网格上<br />

的高度数值,用数学式子表示这种关系就是zij = f(xi, yj)。图5.11为这种<br />

网格数据的示意图,请读者自行体会。<br />

所谓等“高”线,就是将平面上对应的z值(高度)相等的点连接起来<br />

形成的线。同样,我们可以以一座山峰来想象:在同一海拔高度上围绕山<br />

峰一圈的线就是一条等高线。图5.11中的连线即等高线,如实线表示的是高<br />

度为2的点,而虚线表示高度为1的点。注意等高线之间不可能相交,因为<br />

同一点不可能同时有两种高度。<br />

等高线上通常会有数字表示高度,从这些数字我们不难想象出三维的<br />

“山峰”的形状,从这个意义上来说,等高图本质上也是一种三维图示方<br />

法。<br />

R中等高图的函数为contour(),同时grDevices包中也提供了等高线的<br />

计算函数contourLines(),用法分别如下:<br />

1 > usage(contour, "default")<br />

contour(x = seq(0, 1, length.out = nrow(z)),<br />

y = seq(0, 1, length.out = ncol(z)), z, nlevels = 10,<br />

levels = pretty(zlim, nlevels), labels = NULL,<br />

xlim = range(x, finite = TRUE), ylim = range(y,<br />

finite = TRUE), zlim = range(z, finite = TRUE),<br />

labcex = 0.6, drawlabels = TRUE, method = "flattest",<br />

vfont, axes = TRUE, frame.plot = axes, col = par("fg"),<br />

lty = par("lty"), lwd = par("lwd"), add = FALSE,<br />

...)<br />

1 > usage(contourLines)<br />

contourLines(x = seq(0, 1, length.out = nrow(z)),<br />

y = seq(0, 1, length.out = ncol(z)), z, nlevels = 10,<br />

levels = pretty(range(z, na.rm = TRUE), nlevels))

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!