# RColorBrewer概述
核心函数:
- display.brewer.all()
- brewer.pal.info
- display.brewer.pal(9,“Paired”)
- brewer.pal(9,“Paired”)[3:8]:选择亚组中的颜色
library(RColorBrewer)
display.brewer.all() #显示所有调色板
# 可以看出其调色板可分为3类,到底具体是哪三类?
#返回画板名称,最大颜色数等,以文本的形式展示
brewer.pal.info
运行结果如下:
#下面是运行结果
maxcolors category colorblind
BrBG 11 div TRUE
PiYG 11 div TRUE
PRGn 11 div TRUE
PuOr 11 div TRUE
RdBu 11 div TRUE
RdGy 11 div FALSE
RdYlBu 11 div TRUE
RdYlGn 11 div FALSE
Spectral 11 div FALSE
Accent 8 qual FALSE
Dark2 8 qual TRUE
Paired 12 qual TRUE
Pastel1 9 qual FALSE
Pastel2 8 qual FALSE
Set1 9 qual FALSE
Set2 8 qual TRUE
Set3 12 qual FALSE
Blues 9 seq TRUE
BuGn 9 seq TRUE
BuPu 9 seq TRUE
GnBu 9 seq TRUE
Greens 9 seq TRUE
Greys 9 seq TRUE
Oranges 9 seq TRUE
OrRd 9 seq TRUE
PuBu 9 seq TRUE
PuBuGn 9 seq TRUE
PuRd 9 seq TRUE
Purples 9 seq TRUE
RdPu 9 seq TRUE
Reds 9 seq TRUE
YlGn 9 seq TRUE
YlGnBu 9 seq TRUE
YlOrBr 9 seq TRUE
YlOrRd 9 seq TRUE
#查看画板情况
table(brewer.pal.info$category)
运行结果如下:
div qual seq
9 8 18
综上所述,RColorBrewer共提供了3类调色板,并可以用brewer.pal()生成需要的颜色,这3类包括:
- 连续型sequential:共18组颜色,每组9个渐变色。
- 离散型diverging:共9组颜色,生成深色强调两端、浅色标识中部的系列颜色。
- 定性型qualitative:共9组颜色,生成一系列彼此差异比较明显的颜色,通常用来标记分类数据。
display.brewer.all(type = "div")
display.brewer.all(type = "qual")
display.brewer.all(type = "seq")
上述三个命令运行的是分别是离散型,定性型,连续型的结果,举一个定性型的例子
如果只想看其中一种的结果:
display.brewer.pal(9,"Paired")
brewer.pal函数是最重要的函数,我们只有先从调色板取色才能用于后续的可视化。
brewer.pal(n, name)
例如,取色赋给变量mypalette
mypalette<-brewer.pal(7,"Greens")
display.brewer.pal(7,"Greens")#查看上一行代码调用的是什么颜色
当你想使用混合使用不同色板的颜色时怎么办呢?可以先取多个色板赋给不同的变量,然后组合变量的值就好了。
set1<-brewer.pal(8,"Set3")
set2<-brewer.pal(8,"Set2")
set3<-brewer.pal(8,"Set1")
mycolor<-c(set1[1],set2[2],set3[6])
mycolor
mycolor的运行结果如下:
[1] "#8DD3C7" "#FC8D62" "#FFFF33"
#可视化上述mycolor运行的结果
image(1:3,1,as.matrix(1:3),col=mycolor,xlab="my color",ylab="Y",xaxt="n",yaxt="n",bty="n")
从左往右依次是:“#8DD3C7” ,“#FC8D62” ,“#FFFF33”
注意:可视化单个颜色,image输入的数据必须是矩阵
image(1,1,as.matrix(1:1),col='#eb4b3a')
colorRampPalette
下面来介绍RColorBrewer的神仙函数colorRampPalette。
核心函数:
colorRampPalette(brewer.pal(9,“Set1”))(n)
library(RColorBrewer)
lp <- data.frame(city=c("全国","江苏","广东", "浙江","全球平均","中高收入","美国","英国","德国","高收入","日本"),
value=c(77,78,78,80,73,76,79,81,81,81,84))
lp$city <- factor(lp$city,levels = lp$city)
ggplot(lp,aes(city,value,fill=city))+
geom_bar(stat="identity",width=0.5)+
geom_text(aes(label=value),size=4,color="black",fontface="bold",hjust=-0.5)+
theme_bw()+
ylim(c(0,100))+
labs(x="",y="")+
theme(legend.position = "",
axis.text = element_text(face = "bold",size=16))+
coord_flip()+
scale_fill_brewer(palette = "Set1")
上图中有11个组别,但是“Set1”只有9种颜色,怎么处理这个情况呢?
这个时候神仙函数colorRampPalette该来救场了,咱们只需要给colorRampPalette点颜色,就可以从里面任意取色了。
举例子:产生12中颜色
x <- colorRampPalette(c("royalblue","firebrick3"))(12)
scales::show_col(x)
举例子,产生56种颜色
y <- colorRampPalette(c("royalblue","white","firebrick3"))(56)
scales::show_col(y)
# 还可以让颜色更深些:
scales::show_col(colorRampPalette(c(rep("royalblue",3),"white",rep("firebrick3",3)))(56))
#注意:重新运行,能够产生11个颜色
ColorCount <- length(unique(lp$city))#因为11个city,所以,unique(lp$city)为11
getPalette <- colorRampPalette(brewer.pal(9,"Set1"))
scales::show_col(getPalette(ColorCount))
再次运行,就会有11个颜色
ggplot(lp,aes(city,value,fill=city))+
geom_bar(stat="identity",width=0.5)+
geom_text(aes(label=value),size=4,color="black",fontface="bold",hjust=-0.5)+
theme_bw()+
ylim(c(0,100))+
labs(x="",y="")+
theme(legend.position = "",
axis.text = element_text(face = "bold",size=16))+
coord_flip()+
scale_fill_manual(values = getPalette(ColorCount))
注意:搞清getPalette(ColorCount)的含义,getPalette(ColorCount)也可以写成getPalette(11)
1.参考网址:https://www.jianshu.com/p/1ebeaaed6f4e
1.参考题目:【R>>RColorBrewer】神仙函数colorRampPalette
2.参考网址:https://www.jianshu.com/p/9bff33aa4d25
2.参考题目:学习RColorBrewer包