我正在使用R中的“raster”包从光栅文件创建一些Map。我想创建比较光栅,并排显示几个Map。重要的是,无论每个Map中的值如何,所有Map使用的色标都是相同的。例如,如果Map1的值为0-1,Map2的值为0-0.5,值为0.5的单元格在两个Map上应具有相同的颜色。
举例来说:
- Map1具有从0到1的值
- 图2具有从0到0.5的值
- 颜色从红色(最低)到绿色(最高)
我希望值0.5在两个贴图中具有相同的颜色(即黄色,介于红色和绿色之间)。当前行为是贴图1中为黄色,贴图2中为绿色。
我找不到一种方法来实现这一点。我找不到任何方法来设置与绘图函数一起使用的像素值范围。setMinMax()没有帮助(因为'plot'总是计算值)。甚至试图手动设置值(例如g1@data@max <- 10)也不起作用(这些在绘图时被忽略)。
最后,制作一堆Map(这可能会被期望以相同的颜色标度绘制所有内容)也不起作用-每个Map仍然有自己的颜色标度。
有什么想法吗?
编辑:
我最终使用的解决方案是:
plot( d, col=rev( rainbow( 99, start=0,end=1 ) ), breaks=seq(min(minValue( d )),max(maxValue(d)),length.out=100) )
字符串
7条答案
按热度按时间5lwkijsr1#
现在,简单的解决方案是使用zlim选项。
字符串
niknxzdl2#
由于image::raster函数指定了image::base参数可以被传递(并建议可能使用image::base),所以你不需要为所有对image::raster的调用指定相同的col=和breaks=参数吗?你需要让breaks和col参数“同步”。颜色的数量需要比breaks的数量少一个。下面的例子是基于经典的火山数据,第二个版本展示了如何从图像中排除一个范围的值:
字符串
一个具体的例子将有助于这一努力。
omhiaaxx3#
作为对@Tomas的回应而添加
我最终使用的答案是:
字符串
ct2axkht4#
在“光栅”中还有更多的工作要做,但这里是一个黑客:
字符串
也可以使用spplot函数(sp包)
型
您也可以将值发送到ggplot(搜索r-sig-geo归档文件以获取示例)如果您的栅格图层链接到一个非常大的文件,则可以在转到ggplot之前先执行此操作
型
然后也许
jpfvwuh45#
它对我不起作用。我使用这个脚本来分割色标,并根据我的数据选择一个更合适的:
字符串
5cg8jx4n6#
一个非常简单的解决方案,通常应该工作(例如,与光栅包中的“plot”功能)是设置“z轴”限制(控制颜色和颜色图例)。
例如,您可以执行以下操作:
plot(d, zlim=c(0,1))
其中d是一个堆叠的光栅对象。或者,如果你有一堆单独的光栅d1,d2,d2.,你可以这样做:
plot(d1, zlim=c(0,1))
plot(d2, zlim=c(0,1))
plot(d3, zlim=c(0,1))
.5hcedyr07#
尝试rasterVis::levelplot(x),其中x是栅格文件的堆栈