作图系列之生成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()
如图: