嗨我有一个矩阵37x73,它代表一个以10x10度间距网格化的变量(moavg)(-180 但是我无法显示颜色条。我想知道是否还有其他功能(也许是ggplot),这也允许我绘制颜色图例。 非常感谢image(LON, LAT, moavg)
答案 0 :(得分:4)
关于this answer:
library(fields)
image.plot(lon, lat, moavg, col=heat.colors(8))
PS:请非常友好地在您的问题中提供可重复的示例。 Here's how it works。
答案 1 :(得分:4)
为了绘制网格化空间数据,raster
和rasterVis
包也很有用。
以下是几个例子:
library(rasterVis) # this will also load the raster package
# Create a raster from a matrix of dummy data
m <- matrix(runif(36*18), ncol=36)
r <- raster(m)
# Set the extent of the object
extent(r) <- c(-180, 180, -90, 90)
# plot with raster
plot(r)
# plot with rasterVis
levelplot(r, margin=FALSE)
如果网格数据存在于文件中(例如.asc,.tif等),则可以通过提供raster()
文件路径来加载它,例如raster('C:/path/to/moavg.asc')
,您不需要在该情况下设置范围,因为该文件应包含此元数据。
有关详细信息,请参阅?raster
和?levelplot
。
使用raster
进行绘图
使用levelplot
进行绘图
修改强>
为了解决评论中对此问题的扩展,这里有一种覆盖多边形的方法:
library(maps)
levelplot(r, xlab='longitude', ylab='latitude', margin=FALSE,
panel = function(x, y, ...) {
panel.levelplot(x, y, ...)
mp <- map("world", plot = FALSE, fill=TRUE)
lpolygon(mp$x, mp$y)
})