我正在使用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 <- 10)也不起作用(在绘制时被忽略)。
最后,创建一个地图堆栈(可能预期将所有内容都绘制在同一颜色刻度上)也不起作用-每个地图仍然具有自己的颜色刻度。
有没有什么想法如何做到这一点?
编辑:
我最终使用的解决方案是:
例如:
- 地图1的值从0到1 - 地图2的值从0到0.5 - 颜色从红色(最低)到绿色(最高)
我希望值为0.5的单元格在两个地图中具有相同的颜色(即黄色,因为它是红色和绿色之间的中间值)。当前的行为是它在地图1中为黄色,在地图2中为绿色。
我找不到解决方法。我无法看到设置绘图函数使用像素值范围的任何方法。setMinMax()没有帮助(因为'plot'总是计算值)。即使试图手动设置值(例如g1@data@max <- 10)也不起作用(在绘制时被忽略)。
最后,创建一个地图堆栈(可能预期将所有内容都绘制在同一颜色刻度上)也不起作用-每个地图仍然具有自己的颜色刻度。
有没有什么想法如何做到这一点?
编辑:
我最终使用的解决方案是:
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*
对象即可使用它。 - Oscar Perpiñán