作图系列之生成ColorBar

Colorbar其实就是一系列的颜色,每个颜色对应统计图中的一个值。比如需要展示组间比较的t值图。那么colorbar中一个颜色就对应一个t值。那么,理论上,根据t值的取值范围,生成一系列数值,然后生成相应数量的颜色就应该可以得到一个. colorbar。按照以上思路,利用R中的函数ColorBar即可生成相应的colorbar了。

导入依赖包。

library(s2dverification)

定义生成颜色的函数。colors中的颜色可以自己设定,可以用吸管工具确定原图中colorbar中的几个点的颜色。需要注意的是,n应该小于或等于(length(colors)-1)*numOfColor。如果不满足要求,可以在colors中加入更多的颜色,或者增大numOfColor,或者减小n。

getPalette <- function(n) {
  # n should less than (length(colors)-1)*numOfColor
  colors <- c("#000123", "#8725C6", "#E05D28", "#F7C744", "#FFFEF3")
  numOfColor <- 500

  resCols <- c()
  for (i in 1:(length(colors))-1) {
    tmpCols <- colorRampPalette(c(colors[i], colors[i+1]), numOfColor)
    resCols <- c(resCols, tmpCols(numOfColor))
  }
  
  colIndex <- seq(1, length(resCols), length.out=n)
  return(resCols[colIndex])
}

测试数据,并生成相应的colorbar。

colorMin <- 0
colorMax <- 10
vals <- round(seq(colorMin, colorMax, length.out=50), 2)

pdf("colorbar.pdf", width = 8, height = 10)
ColorBar(vals,
         color_fun=getPalette,
         label_scale=6,
         tick_scale=6,
         extra_margin=c(1, 0, 1, 0),
         label_digits=3)
dev.off()

如图:

posted @ 2020-09-18 10:36  海拉鲁捡垃圾  阅读(1782)  评论(0编辑  收藏  举报