大家在绘制图的时候是不是有的时候老师纠结颜色的搭配。今天给大家介绍一个可以自动搭配颜色的R包RColorBrewer。R包的安装载入就不再赘述。直接进入主题。
首先我们看下它都包含了哪些颜色:
我们可以运行display.brewer.all(n=10,exact.n=FALSE)就可以看到这个包中所有的颜色搭配。
以上共有三组颜色:
- Sequential,按顺序渐变的,越往后颜色越深。
- Diverging,彼此之间差异变化较大的。
- Qualitative,这个用于最大程度地显示不同类之间的差别。
The sequential palettes names are (最大九种不同的颜色)
Blues BuGn BuPu GnBu Greens Greys OrangesOrRd PuBu PuBuGn PuRd Purples RdPu Reds YlGn YlGnBu YlOrBr YlOrRd
The diverging palettes are (最大11种不同颜色)
BrBG PiYG PRGn PuOr RdBu RdGy RdYlBu RdYlGnSpectral
当然也有个例如下:
Accent(8),Dark2(8),Paired(12),Pastel1(9),Pastel2(8),Set1 (9),Set2(8),Set3 (12)
如果我们需要的颜色数量大于12,那么我们需要利用R中自带的颜色向量:
terrain.colors(n),heat.colors(n),topo.colors(n),cm.colors(n),rainbow(n).
或者我们也可以R包中的颜色向量进行拼接也可以满足我们的需求。
接下来我们看下R包中的主要函数以及如何将颜色载入:
brewer.pal函数可以将颜色载入,其参数分布也很简单:brewer.pal(n,name)其中n指的颜色的个数,name指的颜色的名称(也就是上面三组中的某一个名称)最我们利用它进行实战画图。我们今天趁此机会跟大家介绍一种自编程的绘图叫圆形条形图。首先我们来看下实现原理:首先我们要知道圆上的点的计算公式x=r*cos(a);y=r*sin(a)。接下来就可以进行编程了,程序如下:
代码语言:javascript复制Bar_cycle<-function(name,value){
代码语言:javascript复制 xsize=200
代码语言:javascript复制 plot(0, 0,xlab="",ylab="",axes=FALSE,xlim=c(-xsize,xsize),ylim=c(-xsize,xsize))
代码语言:javascript复制 for(i in 1:length(name)){
代码语言:javascript复制 info = name[i]
代码语言:javascript复制 percent = value[i]
代码语言:javascript复制 k = 1:(360*percent/100)
代码语言:javascript复制 r=xsize*(length(name)-i 1)/length(name)
代码语言:javascript复制 #print(r)
代码语言:javascript复制 x=r*sin(k/180*pi)
代码语言:javascript复制 y=r*cos(k/180*pi)
代码语言:javascript复制 text(-18,r,info,pos=2,cex=1.5,col=cols[i])
代码语言:javascript复制 text(-9,r,paste(percent,"%"),cex=1.5,col=cols[i])
代码语言:javascript复制 lines(x,y,col=cols[i],lwd=(length(name)-i 1)*1.2)
代码语言:javascript复制 }
代码语言:javascript复制 }
代码语言:javascript复制我们参考别人的数据信息进行图像的绘制,并且展示在我们颜色包中的颜色分布。
代码语言:javascript复制country<-c("老挝","菲律宾","尼泊尔","孟加拉","阿富汗","新加坡","泰国","蒙古","新西兰")
代码语言:javascript复制percent<-c(90,81,80,77,75,74,73,72,68,)
代码语言:javascript复制d<-data.frame(country,percent)
代码语言:javascript复制library(RColorBrewer)
代码语言:javascript复制cols=brewer.pal(length(country),’ Set3’)####颜色配置
代码语言:javascript复制png("G:/test.png",width = 2048, height = 2048)
代码语言:javascript复制Bar_cycle(country,percent)
代码语言:javascript复制dev.off()
总结,如果想绘制其他的条形图原理通用,只要能把图像上的点有公式计算就可以绘制,同样颜色的搭配也可以参考RColorBrewer包或者自己设置。