R如何控制颜色栏/图例的间距

R如何控制颜色栏/图例的间距,r,legend,colorbar,r-raster,R,Legend,Colorbar,R Raster,我想绘制一张叶绿素浓度图,但这些值的分散方式使得图例变得不可读(见图) 因此,我试图控制颜色栏/图例中颜色的间距。我想让它均匀分布(同时在地图上保持不均匀的间隔) 下面的示例非常简单,适用于光栅打印,但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)) 库(光栅) r这很难看

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

因此,我试图控制颜色栏/图例中颜色的间距。我想让它均匀分布(同时在地图上保持不均匀的间隔)

下面的示例非常简单,适用于光栅打印,但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))
库(光栅)

r这很难看,但是你可以对地图使用
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))
使用
图像添加图例。从
字段
包中打印
,将自定义打断标签放置在默认打断位置:

library(fields)
image.plot(r, zlim = c(0,20), 
           legend.only = TRUE, 
           col = my_col,
           axis.args = list(at = def_breaks, labels = my_breaks))

你不能将“r”中的值的范围拆分为小数点,并将其用于创建传递给“col”参数的调色板的colorRamp吗?谢谢,这可能是解决问题的一种方法,但我宁愿控制“r”中的断点,并找到控制图例间距的解决方案。
library(fields)
image.plot(r, zlim = c(0,20), 
           legend.only = TRUE, 
           col = my_col,
           axis.args = list(at = def_breaks, labels = my_breaks))