【发布时间】:2011-05-18 00:45:37
【问题描述】:
我正在使用 R 中的“raster”包从栅格文件创建一些地图。我想创建比较栅格,并排显示几个地图。重要的是,所有地图使用的色标都是相同的,无论每张地图中的值如何。例如,如果地图 1 的值介于 0-1 之间,而地图 2 的值介于 0-0.5 之间,则值为 0.5 的单元格在两个地图上应该具有相同的颜色。
例如:
- 地图 1 的值从 0 到 1
- 地图 2 的值从 0 到 0.5
- 颜色从红色(最低)变为绿色(最高)
我希望 0.5 的值在两张地图中具有相同的颜色(即黄色,介于红色和绿色之间)。当前的行为是在地图 1 中为黄色,在地图 2 中为绿色。
我找不到方法来完成这项工作。我看不到任何方法来设置与绘图功能一起使用的像素值范围。 setMinMax() 没有帮助(因为 'plot' 总是计算值)。即使尝试手动设置值(例如 g1@data@max
最后,制作一堆地图(这可能会以相同的色标绘制所有内容)也不起作用 - 每张地图仍然有自己的色标。
关于如何做到这一点的任何想法?
编辑:
我最终使用的解决方案是:
plot( d, col=rev( rainbow( 99, start=0,end=1 ) ), breaks=seq(min(minValue( d )),max(maxValue(d)),length.out=100) )
【问题讨论】:
-
您最终使用的解决方案实际上是最佳答案。请把它作为答案并接受!我差点错过了——我不会在问题中寻找答案。
-
spplot显示一个RasterStack,其中包含所有图层的全局图例。raster包为spplot定义了一个方法,因此您无需将RasterStack转换为Spatial*对象即可使用它。