R成精系列-R语言色彩与图形配色

色彩是一门重要的艺术语言。
在不同的领域,色彩都以其扑面而来的色感,带给人们直观的生理和心理感受,产生想象和联想。
R语言无与伦比的绘图系统能够产出精美的图,如何构造精美的图片,色彩起着举足轻重的作用,良好的配色往往在图表中起到点睛的作用。
但往往都是别人的图很精美,自己画的图则丑得哭。
希望通过本文能够提升R语言的色彩的基本运用,如果看完做的图任然很丑,那就是审美的问题,可以找个美术老师补习一下审美的知识。

一、色彩的基础

初中物理课我们大概都做过棱镜实验,白光通过棱镜后被分解成多种颜色逐渐过渡的色谱带,颜色依次为红、橙、黄、绿、青、蓝、紫,这就是可见光谱,对啦,彩虹就是光色散的现象。


白色光

而色彩的混合模式分为:

  • 色光的混合
  • 颜料的三原色混合

红、绿、蓝三种色光无法被分解,故称“三原色光”,因此将红(R)、绿(G)、蓝(B)三色作为色光三原色。可见光谱中的大部分颜色可以由三种基本色光按不同的比例混合而成,色光三原色被广泛应用于电视机、监视器等主动发光的产品中。
由于颜料本身是不发光的,我们之所以看到颜料的各种颜色是光源照射到颜料后,被颜料吸收部分色光后反射的一部分色光。因此颜料三原色是色光混合原理的延伸,它是色光做在做减法,所以亦称为减法三原色。青色、品红、黄色三种颜料两两混合能产生其他各种颜色,所以把青色、品红、黄色称为颜料三基色。颜料三基色的混色在绘画、印刷中得到广泛应用。

色光的三原色及混合

颜料的三原色及混合

我把色光混合背景做成黑色是因为色光混合式加法混合,因此你可以将此想象为在漆黑的屋子里面的三束光(红、绿、蓝)照射在墙上所产生的效果。而右边这张图是颜料混合,它是减法混合,你可以想象成是你用三只颜料笔(青、黄、品红)在白纸上涂画所产成的。
图中每个圆的颜色代表原色,两圆相交的部分的颜色是间色,和圆颜色相对不相交的颜色是它的互补色。
本人不是美术专业,以上内容来自互联网,专业的色彩知识可参考:色彩基础知识

二、R语言的色彩相关的函数

palette()调色板
colors()生成R的颜色
rgb()生成颜色编码
col2rgb()将颜色转为rgb色值。
rgb2hsv(col2rgb("blue"))
R自带的grDevices包有如下6个调色板,传入获取颜色的个数,就获得相应个数的颜色列表,gray()的参数需在[0,1]。

rainbow()
heat.colors()
terrain.colors()
topo.colors()
cm.colors()
gray()

RColorBrewer包

三、如何进行配色

当我们不知道怎么配色,或者怎么配色都不好看的时候,可以直接用别人定义好的主题是最方便的做法,你只负责出图,颜色的事情交给专业的人士来处理。
ggthemes包中的色彩方案都是打包好,命名过的,所以我们引用的时候,只需赋值即可。

推荐阅读更多精彩内容