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
RColorBrewer包---R语言的配色方案的更多相关文章
- DT包 -- R语言中自定义表格数据
DT 包提供了 JavaScript 库 DataTables 的一个R接口,它使得R对象(矩阵或数据框)可以在HTML页面上显示为表格. 该包的DataTables函数生成的表格提供了数据的筛选.分 ...
- R语言 包
R语言包 R语言的包是R函数,编译代码和样本数据的集合. 它们存储在R语言环境中名为"library"的目录下. 默认情况下,R语言在安装期间安装一组软件包. 随后添加更多包,当它 ...
- R语言中文社区历史文章整理(类型篇)
R语言中文社区历史文章整理(类型篇) R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...
- R语言:用简单的文本处理方法优化我们的读书体验
博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html 前言 延续之前的用R语言读琅琊榜小说,继续讲一下利用R语言做一些简单的文本处理.分词的事情.其实 ...
- R语言从小木虫网页批量提取考研调剂信息
一.从URL读取并返回html树 1.1 Rcurl包 使用Rcurl包可以方便的向服务器发出请求,捕获URI,get 和 post 表单.比R socktet连接要提供更高水 ...
- 数据攻略●R语言自述
(注明:以下文章均在Linux操作系统下执行) 一.R语言简介 R语言是用于统计分析,图形表示和报告的编程语言和软件环境.R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大 ...
- R语言学习 第四篇:函数和流程控制
变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...
- 【转】R语言知识体系概览
摘要:R语言的知识体系并非语法这么简单,如果都不了R的全貌,何谈学好R语言呢.本文将展示介绍R语言的知识体系结构,并告诉读者如何才能高效地学习R语言. 最近遇到很多的程序员都想转行到数据分析,于是就开 ...
- centos安装与配置R语言
Linux下安装R语言 一.编译安装 由于采用编译安装,所以需要用到gcc编译环境,在编译前check文件时还会用到libXt-devel和readline-devel两个依赖,所以在编译R语言源码时 ...
随机推荐
- python 获取控制台输入
python想从控制台获取输入的的函数有两个一个是raw_input,一个是input. 这两个函数的区别是input获取的时候会精确到类型,假设输入的是1,那么获取的就是int型的变量,如果想输入字 ...
- http://poj.org/problem?id=3278(bfs)
Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 76935 Accepted: 24323 ...
- 关于ActionContext.getContext()的用法心得
转: 为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest.HttpSession和ServletContext进行了封装, ...
- Linux常用的日志分析命令与工具
>>基础命令 操作 命令 说明 查看文件的内容 cat -n access.log -n显示行号 分页显示文件 more access.log Enter下一行,空格下一页,F下一屏,B上 ...
- Pyqt QComboBox 省市区县联动效果
在Qt中, QComboBox方法窗口组件允许用户从列表清单中选择,在web中就是select标签,下拉选项. 省市区县的联动就是currentIndexChanged 获取当前的Index,通过这个 ...
- 【PHP数组的使用】
PHP数组使用关键字array标识,数组内的元素可以是任意类型,而且可以不是同一种类型,这和c.java不同. 遍历数组的方法可以使用foreach,也可以使用for循环 可以使用print_r或者v ...
- 使用Asyncio的Coroutine来实现一个有限状态机
如图: #!/usr/bin/env python # -*- coding: utf-8 -*- import asyncio import datetime import time from ra ...
- OCJP(1Z0-851) 模拟题分析(四)over
Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有 ...
- html5 简单音乐播放器
html5 简单音乐播放器 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> < ...
- js onclick="return test()"事件返回值,对有些事件,会影响默认动作的执行。如:onclick和onsubmit
onclick="return test()"事件返回值,对有些事件,会影响默认动作的执行.如:onclick和onsubmit <body> <!--事件返回值 ...