3

我使用 lattice 包在 R 中绘制了一个变量的水平图。该网格对应于南亚。我只对查看南亚某些国家的这个变量(气溶胶光学深度)的值感兴趣。我有一个虚拟变量,我感兴趣的国家取值为 1,否则取值为 0。我可以将网格的这一部分涂成黑色或任何其他颜色吗?

我无法显示级别图,因为我在 stackoverflow 上的声誉很低。(现在应该出现附加到 rhelp 的交叉发布消息的 pdf 文件:)

这是我的 R 代码:

levelplot(aod ~ longitude + latitude | factor(day), data = aod_Jan, 
    aspect="iso", contour = TRUE, layout=c(1,1))

在此处输入图像描述

4

2 回答 2

4

由于您使用的是地理数据,因此该raster软件包可能对您有用。例如,让我们显示法国的海拔高度(下载此zip文件或使用该raster::getData功能)。在你unzip文件之后:

library(raster)
fraAlt <- raster('FRA_alt')
plot(fraAlt) ## Not only France is displayed...

如果只想显示法国的高度,则需要边界信息:下载此RData文件(或使用该raster::getData功能)。这RData包含一个SpatialPolygonsDataFrame(命名的gadm),可以转换为Raster

 mk <- rasterize(gadm, fraAlt)

现在您可以使用边界屏蔽高度栅格:

 fraAltMask <- mask(fraAlt, x)
 plot(fraAltMask) ##Now only France is displayed

最后,如果你想使用lattice方法,你需要这个rasterVis包:

 library(rasterVis)
 levelplot(fraAlt)
 levelplot(fraAltMask)

现在,所有这些都与叠加的边界一起:

 s <- stack(fraAlt, fraAltMask)
 layerNames(s) <- c('Alt', 'AltMask')
 boundaries <- as(gadm, 'SpatialLines')
 levelplot(s) + layer(sp.lines(boundaries))
于 2011-09-28T15:10:41.857 回答
0

对 levelplot 使用子集参数。也许:

levelplot(aod ~ longitude + latitude | factor(day), data = aod_Jan, subset = dummy==1,
    aspect="iso", contour = TRUE, layout=c(1,1))
于 2011-09-27T17:46:51.330 回答