R语言颜色综合运用与色彩方案共享
今天这篇主要讲解R语言颜色综合运用,主要跟大家介绍如何提取那些专业色彩包中的颜色搭配用于在基础绘图系统和高级绘图系统中共享。
其实无论是R语言的预设配色系统、自定义颜色表还是哪些专属配色包,我们所使用(或者R语言识别的)的仅仅就是一组字符向量所代表的色值而已,并不神秘。
通过scales中的色彩获取函数,我们可以将专属配色主题(RColorBrewer、ggthemes)中的配色主题提取出来,以函数的形式传递给基础绘图系统(plot)以及ggplot绘图系统。
本文按照三部分进行讲解:
-
RColorBrewer部分:
-
ggthemes部分:
-
scales::brewer.pal运用:
RColorBrewer部分
关于RColorBrewer包之前在写ggplot函数系统的时候已经有所涉猎,其中专门讲解过它的官方配色网站:http://colorbrewer2.org/#
这是一个非常神奇的网站,RColorBrewer包中的配色方案全部来源于此,而且网站上允许自定义色彩序列和类型,衍生出来的颜色要比该包中的配色资源多出很多倍。
library(RColorBrewer)
display.brewer.pal(n, name)
display.brewer.all(type="all")
ColorBrewer设计团队将配色方案分为三种:
-
seq:连续渐变色
-
div:双向渐变色
-
qual:分类色
通过display函数可以查看不同类型的色板:
颜色查看:
display.brewer.all(type = "all") #查看所有色板
display.brewer.all(type = "seq") #查看单色渐变色板
display.brewer.all(type = "div") #查看双色渐变色板
display.brewer.all(type = "qual") #查看离散(分类)色板
以上通过display四个函数成功显示了全部色板、单色渐变色板、双色渐变色板、离散(分类)色板
当然你也可以通过display.brewer.pal(n, name)函数显示指定名称的颜色主题:
display.brewer.pal(9, "BuGn")
par(mfrow=c(1,5),mar=c(1,1,2,1),xaxs="i", yaxs="i")
mycolors<-brewer.pal(9, "BuGn")
barplot(rep(1,times=9),col=mycolors,border=mycolors,axes=FALSE, horiz=T,main="MyColors of BuGn ")
mycolors<-brewer.pal(9, "OrRd")
barplot(rep(1,times=9),col=mycolors,border=mycolors,axes=FALSE, horiz=T,main="MyColors of OrRd")
mycolors<-brewer.pal(9, "YlGn")
barplot(rep(1,times=9),col=mycolors,border=mycolors,axes=FALSE, horiz=T,main="MyColors of YlGn")
mycolors<-brewer.pal(9, "Oranges")
barplot(rep(1,times=9),col=mycolors,border=mycolors,axes=FALSE, horiz=T,main="MyColors of Oranges")
mycolors<-brewer.pal(9, "Blues")
barplot(rep(1,times=9),col=mycolors,border=mycolors,axes=FALSE, horiz=T,main="MyColors of Blues")
dev.off()
大家已经看到了,通过brewer.pal(n, "name")函数,可以很轻松的提取出你想要的配色主题。
如果你想要某个配色主题的其中几个色值,可使用如下方式提取:
display.brewer.pal(6, "BuGn")#按顺序提取前六个
如果想要提取某一组色彩主题不连续的颜色,可以使用文本函数:
library(scales)
a<-brewer.pal(9, "BuGn")
show_col(a[c(1,3,5,7,9)],labels=F)
通过向量合并,你还可以自己从色彩包中自定义色彩方案。
b1<-brewer.pal(9, "BuGn");b2<-brewer.pal(9,"Blues")
c<-c(b1[c(1,3,5,7,9)],b2[c(2,4,6,8)])
show_col(c,labels=F)
其实都是些很简单的文本函数组合,毕竟色彩方案在软件中也就是一组字符向量而已。
以上这些色彩方案可以很容易的应用到基础绘图系统和ggplot绘图系统中。
c<-c(50,30,50,70,90,40)
names(c)<-LETTERS[1:6]
mycolor<-brewer.pal(9,"Greens")
pie(sort(c,decreasing=T),labels=names(c),col=mycolor[c(3,5,5,6,7,9)],clockwise=T,radius=1,border=F)
library(ggplot2)
library(plyr)
mydata<-data.frame(c)
ggplot(data=mydata,aes(x=factor(1),y=c,fill=factor(c),order=desc(c)))+
geom_bar(stat="identity",width=1,col="white")+
coord_polar(theta = "y",start=0)+
theme(panel.grid = element_blank(),
panel.background = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank())+
scale_fill_brewer(palette="Greens",labels=c("E", "D", "A","C","F","B"))+
guides(fill=guide_legend(reverse=TRUE,title=NULL))
ggthemes部分
接下来讲解ggthemes部分,其实ggthemes包原本是转为ggplot2包开发的辅助包(前面加的前缀——gg就可以看出来,这种包还有很多),里面提供了大量高质量的主题、颜色方案。其中就有我们所熟知的economist主题方案以及wsj方案,还有诸如stata、excel、tableau、solarized、tufte等主题方案。
ggthemes包中的色彩方案都是打包好,命名过的,所以我们引用的时候,只需赋值即可。
这里以economist和WSJ为例:
library(ggthemes)
m1<-economist_pal()(6)
show_col(m1)
mycolor<-m1<-economist_pal()(5)
pie(sort(c,decreasing=T),labels=names(6),col=mycolor,border=F,clockwise=T,init.angle=90,radius=1)
ggplot(data=mydata,aes(x=factor(1),y=c,fill=factor(c),order=desc(c)))+
geom_bar(stat="identity",width=1,col="white")+
coord_polar(theta = "y",start=0)+
theme(panel.grid = element_blank(),
panel.background = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank())+
scale_fill_economist(labels=c("E", "D", "A","C","F","B"))+
guides(fill=guide_legend(reverse=TRUE,title=NULL))
m2<-wsj_pal()(6)
show_col(m2)
mycolor<-m1<-wsj_pal()(6)
pie(sort(c,decreasing=T),labels=names(c),col=mycolor,border=F,clockwise=T,init.angle=90,radius=1)
全部评论
请发表评论