写在前面的话
作为一个理科男,也许我的科研能力达不到理工男的平均水准。但你要是说比审美,那我想说在座的各位都是弟弟。每当导师让我画图时,红黄绿三原色都是我的第一选择。于是我画的图往往就成了如下样式:
有时候我们不想使用全部颜色,只想要使用某个配色方案中的三四种颜色怎么办呢?使用命令 brewer.pal
即可,如我们输入brewer.pal(11,'BrBG')
,结果如下:
我们可以看到 RColorBrewer
包中的所有颜色都是以十六进制颜色格式存储的,每一个颜色都对应有一个十六进制表示。
此外, RColorBrewer
包中某一种配色的种类是有限制的,比如 seq
类型配色都只有9个颜色。不过,好在我们可以使用 colorRampPalette
函数创建颜色梯度。比如:
mycolor <- brewer.pal(9,'YlOrRd') # 生成某个颜色类型的9种颜色
pal <- colorRampPalette(mycolor) # 生成颜色梯度
mycolors <- pal(24) # 设置生成24个梯度
# 上面两行代码等价于 mycolors <- colorRampPalette(mycolor)(24)
barplot(1:24,col = mycolors)
生成的结果如下:
![image](https://img.haomeiwen.com/i6415244/9686defa6d0903ad.png&originHeight=243&originWidth=640&size=14204&status=done&style=none&width=320?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
总结
-
display.brewer.all()
调用所有的配色方案(图示) -
brewer.pal.info
展示所有的配色方案(文字) -
display.brewer.pal(num,clor_name)
如:display.brewer.pal(11,'BrBG')
- 使用
colorRampPalette
函数创建颜色梯度
rPlotter配色——所见即所得
第一次知道这个包,来自于Y叔那篇“食色性也”的文章。虽然上述的 RColorBrewer
包给了我们很多优秀的配色,但是很多时候我们偶然看到了一个图片、一个海报、一帧电影画面,想要利用其中的配色该怎么办呢?你可能会觉得这怎么可能?但是 rPlotter
包让不可能成为可能。
它是怎么实现的呢?主要是利用 EBImage
包将图片读入,并存储为一个RGB的三维矩阵。然后利用k-means
聚类,把中心点颜色报出来即可。下面简单的介绍一下使用方法,并给出几个例子:
先随机找个图,比如电影《你的名字》海报:
[图片上传失败...(image-5a79c5-1586482322683)]
# 加载包
library('rPlotter')
# 将图片链接存入,转换为三局矩阵,并设置所需颜色的
pal = extract_colours("http://img5.mtime.cn/CMS/News/2017/09/28/095202.11304096_620X620.jpg")
barplot(1:5, col=pal)
结果如下,明显比我之前的红黄蓝好多了…… 以后在办公室看动画,再也不怕被训了,可以大声的告诉导师,我在为figure选配色!!!
声明一下,如果因此被老板训,我不负责~
![image](https://img.haomeiwen.com/i6415244/a51cfcd27976f821.png&originHeight=497&originWidth=744&size=21085&status=done&style=none&width=241?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
安装
rPlotter
包的安装有点麻烦,下面是官方推荐的安装流程。我试了试这个安装流程,虽然中间出现了几个问题,但是按照错误提示,最后还是可以成功安装的。
## CRAN Packages
install.packages(c("ggplot2", "stringr", "reshape2", "dichromat"))
## EBImage
source("http://bioconductor.org/biocLite.R")
biocLite("EBImage")
## Packages on GitHub
library(devtools)
install_github("ramnathv/rblocks")
## And finally ...
install_github("woobe/rPlotter")
网友评论