我想绘制一张叶绿素浓度图,但这些值的分散方式使得图例变得难以理解(见图)
所以我试图控制颜色条/图例中颜色的间距。我想让它间隔均匀(同时保持地图上不均匀的断裂)。
以下示例非常简化,适用于栅格图,但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))
我考虑过将数据转换为日志值,但这并没有给我带来满意的结果。所以对这个传奇的任何帮助都非常感谢。
答案 0 :(得分:2)
这很难看,但你可以使用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))