Image vs ggplot:如何绘制颜色图例?

时间:2014-02-10 18:18:50

标签: r image plot ggplot2 legend

嗨我有一个矩阵37x73,它代表一个以10x10度间距网格化的变量(moavg)(-180 绘制它

image(LON, LAT, moavg)

但是我无法显示颜色条。我想知道是否还有其他功能(也许是ggplot),这也允许我绘制颜色图例。

非常感谢

2 个答案:

答案 0 :(得分:4)

关于this answer

library(fields)
image.plot(lon, lat, moavg, col=heat.colors(8))

enter image description here

PS:请非常友好地在您的问题中提供可重复的示例。 Here's how it works

答案 1 :(得分:4)

为了绘制网格化空间数据,rasterrasterVis包也很有用。

以下是几个例子:

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 进行绘图 raster plot example

使用levelplot 进行绘图 levelplot example


修改

为了解决评论中对此问题的扩展,这里有一种覆盖多边形的方法:

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)
            })

levelplot with overlay