RColorBrewer包---R语言的配色方案

来源:转载

RColorBrewer包介绍

RColorBrewer包提供了3套很好的配色方案。用户只需要指定配色方案的名称,就可以用包中的brewer.pal()函数生成颜色。这3套配色方案包括:

连续型Sequential(连续的):生成一系列连续渐变的颜色,通常用来标记连续型数值的大小。

离散型Diverging(离散的):生成用深色强调两端、浅色标示中部的系列颜色,可用来标记数据中的离群点。

极端型Qualitative(定性的):生成一系列彼此差异比较明显的颜色,通常用来标记分类数据。

在使用这3套配色方案之前,先要加载RColorBrewer包。

if (!require("RColorBrewer")) {

install.packages("RColorBrewer")

library(RColorBrewer)

}

简单的了解RColorBrewer包

查看所有颜色

display.brewer.all()

三套配色方案用法

seq连续型

共18组颜色,每组分为9个渐变颜色展示。使用渐变色往往能让图形看起来更美观,避免单调的颜色在图形中显得突兀。实现代码如下:

# 显示seq连续型方案中各组颜色的名称和样式

display.brewer.all(type = "seq")

如果想使用YlOrRd组的第3~8种颜色,使用下面的代码实现:

# 可以使用brewer.pal(9,"<某组渐变颜色的名称>")来获取该组颜色的全部九种颜色

# 可以使用brewer.pal(9,"<某组渐变颜色的名称>")[i:j]来获取该组颜色的全部九种颜色中的某几种颜色

barplot(rep(1,6),col = brewer.pal(9,"YlOrRd")[3:8])

div离散型

共9组颜色,每组分为11个渐变颜色展示

# 显示div离散型方案中各组颜色的名称和样式

display.brewer.all(type = "div")

如果想使用BrBG组的第3~8种颜色,使用下面的代码实现:

# 可以使用brewer.pal(11,"<某组渐变颜色的名称>")来获取该组颜色的全部九种颜色

# 可以使用brewer.pal11,"<某组渐变颜色的名称>")[i:j]来获取该组颜色的全部九种颜色中的某几种颜色

barplot(rep(1,6),col = brewer.pal(11,"BrBG")[3:8])

qual极端型

共8组颜色,每组渐变颜色不尽相同

# 显示div离散型方案中各组颜色的名称和样式

display.brewer.all(type = "qual")

如果想使用BrBG组的第3~8种颜色,使用下面的代码实现:

# 可以使用brewer.pal(n,"<某组渐变颜色的名称>")来获取该组颜色的全部九种颜色

# 可以使用brewer.paln,"<某组渐变颜色的名称>")[i:j]来获取该组颜色的全部九种颜色中的某几种颜色

barplot(rep(1,6),col = brewer.pal(12,"Set3")[3:8])

注意

一般的绘图函数会使用col颜色参数,此外,一些元素还可以使用bg参数设置其背景颜色,使用border参数设置其边框颜色,其赋值和col参数一样。

应用示例

boxplot中使用

### Set the display a 1 by 1 grid

par(mfrow=c(1,1))

### Generate random data matrix

rand.data <- replicate(8,rnorm(100,100,sd=1.5))

### Draw a box plot, with each box coloured by the 'Set3' palette

boxplot(rand.data,col=brewer.pal(8,"Set3"))

### 颜色不够用怎么办?扩展颜色

### 使用colorRampPalette可以扩展颜色。

newpalette<-colorRampPalette(brewer.pal(9,"Blues"))(10)

### Generate random data matrix

rand.data <- replicate(10,rnorm(100,100,sd=1.5))

### Draw a box plot, with each box coloured by the 'newpalette' palette

boxplot(rand.data,col=newpalette)

其他绘图函数中使用

### Generate random data matrix

rand.data <- replicate(8,rnorm(100,100,sd=1.5))

### Draw plot of counts coloured by the 'Set3' pallatte

br.range <- seq(min(rand.data),max(rand.data),length.out=10)

results <- sapply(1:ncol(rand.data),function(x) hist(rand.data[,x],plot=F,br=br.range)$counts)

plot(x=br.range,ylim=range(results),type="n",ylab="Counts")

cols <- brewer.pal(8,"Set3")

lapply(1:ncol(results),function(x) lines(results[,x],col=cols[x],lwd=3))

### 实例:个人中心各模块用户点击率

### 以下是某网站个人中心内各个功能模块9月份的页面浏览量。

# 由于组别较多,这里使用条形图来展示数据,并把各功能模块流量的百分比展示在图表中。

pv<-c(29123,279750,89994,15851,61741,119477,75301,65602,75924,37943,11952,34567,11894,42780,18511,9450,1011,1533)

id<-c("我的个人中心","我的订单","退换货办理","海外订单","我的收藏","礼品卡","优惠券","账户余额","会员积分","收货地址","促销信息退订","个人资料","关联账户","账户安全","商品评论","商品提问","邀请方式","邀请记录查询")

col<-c(brewer.pal(9, "YlOrRd")[1:9],brewer.pal(9, "Blues")[1:9])

barplot(pv,col=col,horiz = TRUE,xlim=c(-30000,300000))

title(main=list("个人中心各模块用户点击率",cex=2),sub="时间:2012.9.1-2012.9.30", ylab="个人中心各模块")

text(y=seq(from=0.7,length.out=18,by=1.2),x=-15000,labels=id)

legend("topright",legend=rev(id),pch=15,col=rev(col),ncol=2)

text(labels= paste(round(10000*pv/sum(pv))/100,"%",sep=""),cex=0.7,

y=seq(from=0.7,length.out=18,by=1.2),

x=pv+10000)

在上面的例子中,y轴的尺度标记并未使用axis函数设置,原因在于使用axis函数设置的标记其文字方向是垂直的,这会导致y轴没有充足的空间展示尺度标记。而使用text函数设置的标记文字是水平方式排列的,它并不会占据太多y轴的空间。

paste(round(10000*pv/sum(pv))/100,“%”,sep=“”)命令会把pv数据转化为小数点后2位的百分比字符串,把pv向量c(29123,279750,89994,…)转化为字符串向量c(“2.96%”,“28.48%”,“9.16%” ,…)。

由图可知,用户在使用个人中心系统时主要使用完成购买流程的“我的订单”功能,其次是有关用户虚拟支付资源的礼品卡、优惠券,以及会员积分功能。可见个人中心承载的最核心功能仍然是帮助用户完成购物,其占比可以累积达到50%以上。退换货的pv占了9.16%,可以推测用户在日常登录个人中心后台后的退换货行为比例。

参考:

http://book.2cto.com/201408/45574.html

本文链接:

http://www.cnblogs.com/homewch/p/5704153.html

分享给朋友:
您可能感兴趣的文章:
随机阅读: