3

我想绘制一张叶绿素浓度图,但这些值的分散方式使得图例变得不可读(见图)

chl_a

所以我试图控制颜色条/图例中颜色的间距。我想让它均匀分布(同时保持地图本身的不均匀中断)。

下面的示例非常简化,适用于光栅图,但 image.plot 也是如此。

library(raster)    
r <- raster(ncol=5, nrow=4)
r[] <- 1:20
plot(r, breaks = c(0,1,2,3,5,10,20), col = rainbow(6))

我考虑将数据转换为日志值,但这并没有给我一个令人满意的结果。因此,非常感谢您对传说的任何帮助。

4

1 回答 1

3

它很难看,但您可以plot用于地图和image.plot图例。您需要将自定义中断的标签添加到等距中断的位置。

绘制没有图例的地图:

library(raster)
r <- raster(ncol=5, nrow=4)
r[] <- 1:20
my_breaks = c(0,1,2,3,5,10,20)
n = 6
my_col    = rainbow(n)
plot(r, breaks = my_breaks, col = my_col, legend = FALSE, zlim=c(0,20))

默认间隔将等距从 0 到 20:

def_breaks = seq(0,20,length.out=(n+1))

image.plot使用从包中添加图例fields,将自定义中断标签放置在默认中断位置:

library(fields)
image.plot(r, zlim = c(0,20), 
           legend.only = TRUE, 
           col = my_col,
           axis.args = list(at = def_breaks, labels = my_breaks))
于 2013-10-03T11:14:28.213 回答