如何使用晶格封装阻止R中的一部分水平图?

时间:2011-09-27 17:08:36

标签: r plot 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))

enter image description here

2 个答案:

答案 0 :(得分: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))

答案 1 :(得分:0)

使用subset参数进行levelplot。也许:

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