代码之家  ›  专栏  ›  技术社区  ›  Lukas

R如何控制彩条/图例的间距

  •  3
  • Lukas  · 技术社区  · 12 年前

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

    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))
    

    我曾想过将数据转换为日志值,但这并没有给我带来令人满意的结果。因此,我们非常感谢对传奇人物的任何帮助。

    1 回复  |  直到 12 年前
        1
  •  3
  •   koekenbakker    12 年前

    它很难看,但你可以用 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))
    

    使用添加图例 图片.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))