本部分内容已经收录在我即将出版的新书《R语言数据可视化之美》,更多精彩内容敬请期待!
这是我花了一个月参考各种资料研究总结得到,自认为总结的最为全面的图表色彩运用原理!数据可视化除了图表类型的选择尤为重要外,图表的颜色主题搭配也是特别重要的。
所以,现在把我总结的资料推送给大家,一方面是希望也能帮助大家,另一方面也希望有经验的同学多多提看法,我总结的资料并不全准确,希望诸位能多多提意见,不仅能对其中的错误进行修正,还能提出某些论文图表必备的内容以完善该博文。
谢谢!
我的名言就是:初生牛犊不要脸。望大家多多包涵!
张杰
![](https://img-blog.csdnimg.cn/img_convert/1db42236922f3326d75e4d6645235d84.png;wx_lazy=1)
我们先从颜色模型开始讲解学术图表的色彩运用原理。在图像处理中,最常用的颜色空间是RGB模型,常用于颜色显示和图像处理。RGB 颜色模型使用了颜色成分红(Red)、绿(Green)和蓝(Blue)来定义所给颜色中红色、绿色和蓝色的光的量。在24位图像中,每一颜色成分都由0到255之间的数值表示。在位速率更高的图像中,如48位图像,值的范围更大。这些颜色成分的组合就定义了一种单一的颜色。RGB颜色模型采用三维坐标的模型形式,非常容易被理解,如图1-1(a)所示:原点到白色顶点的中轴线是灰度线,R、G、B三分量相等,强度可以由三分量的向量表示。我们可以用RGB来理解色彩、深浅、明暗变化:
(1) 色彩变化:三个坐标轴RGB最大分量顶点与黄紫青YMC色顶点的连线;
(2) 深浅变化:RGB顶点和CMY顶点到原点和白色顶点的中轴线的距离;
(3) 明暗变化:中轴线的点的位置,到原点,就偏暗,到白色顶点就偏亮。
RGB模型也称为加色法混色模型。它是以RGB三色光互相叠加来实现混色的方法,因而适合于显示器等发光体的显示。其混色规律是:以等量的红、绿、蓝基色光混合时。我们平时在绘图软件中调整颜色主要就是通过修改RGB颜色的三个数值,如图1-2(b) Windows 系统自带的选色器的右下角所示。
图1-1 颜色模型对比
![](https://i-blog.csdnimg.cn/blog_migrate/b22e9267c4e3b15cd7acf7626a8608d1.png)
大家平时在颜色选择中还会遇到一种颜色模型:HSB,在这里也给大家做简要的介绍。HSB 色彩模式是基于人眼的一种颜色模式,是普及型设计软件中常见的色彩模式。,其中
(1) 色相H ( Hue ):在0~360°的标准色环上,按照角度值标识。比如红是0°、橙色是30°等,如
(2) 饱和度S ( saturation ):是指颜色的强度或纯度。饱和度表示色相中彩色成分所占的比例,用从0%(灰色)~100%(完全饱和)的百分比来度量。在色立面上饱和度是从左向右逐渐增加的,左边线为0%,右边线为100%,如:。
(3) 亮度B ( brightness ):是颜色的明暗程度,通常是从0(黑)~100%(白)的百分比来度量的,在色立面中从上至下逐渐递减,上边线为100%,下边线为0% ,如:。
HSB有时也作HSV(色相(Hue)、饱和度(Saturation)、色调(Value ))、HSL(色相(Hue)、饱和度(Saturation)、L(lightness))。比起 RGB 系统,HSB 使用了更贴近人类感官直觉的方式来描述色彩,可以指导设计者更好地搭配色彩,会在色彩搭配中经常用到,如图1-2 所示。
(a)Microsoft Office默认的选色器
(b) Windows 系统自带的选色器
图1-2 HSB的应用场景
平时我们颜色参考的色轮(色相轮)就是来源于HSB、HSL颜色模型或Luv颜色模型。Rggplot2包绘图默认的颜色主题方案如图1-3所示,色轮为Luv颜色模型。LUV色彩空间全称CIE1976(L*,u*,v*)(也作CIELUV)色彩空间,L*表示物体亮度,u*和v*是色度。于1976年由国际照明委员会(InternationalCommission on Illumination)提出,由CIE XYZ空间经简单变换得到,具视觉统一性。类似的色彩空间有CIELAB。对于一般的图像,u*和v*的取值范围为-100到+100,亮度为0到100。
图1-3 R ggplot2默认颜色主题
(Acolour wheel illustrating the choice of five equally spaced colours. This isthedefault scale for discrete variables.)
配色网(http://www.peise.net)就是基于颜色搭配原理设计的颜色主题方案自动生成在线网站。它不仅基于常用的场景给出合适的配色方案,而且还允许用户使用配色工具自行配置出极具个人风格又不失美观的方案,功能完备且实用。色彩搭配基本理论方法除了图1-5所说的三种外,还有:类似色搭配(Analogous)、分裂互补色搭配(Split complement)、矩形搭配(Rectangle (tetradic))和正方形搭配(Square)等。(更多色彩搭配理论:(http://www.tigercolor.com/color-lab/color-theory/color-harmonies.htm )。
图1-4 配色网推出的高级配色工具(http://www.peise.net/tools/web/)
色环又称作为色轮,是种按照色相把色彩排列的呈现方式。当我们开始进行色环排列时,需要把原色按照等距关系排列,如图1-5 的12色5轮色轮所示。
1.单色搭配(Monochromatic):这是一种色相由暗、中、明三种色调组成。这就是单色。单色搭配上并没有形成颜色的层次,但形成了明暗的层次。这种搭配在设计中应用时,出来的效果永远不错,其重要性也可见一斑。
2.补色搭配(Complement):如果颜色方案只包括两种颜色,就会选择色环上对立的2个颜色(在色轮上直线相对的两种颜色称为补色,比如红色和绿色),如图(b)所示。互补色搭配在正式的设计中比较少见,主要由于它色彩之间强烈对比所产生的特殊性和不稳定,但是很显然的是,在各种色相搭配中,互补色搭配无疑是一种最突出的搭配,所以如果你想然你的作品特别引人注目,那互补色搭配或许是种最佳选择。
3.三角形搭配(Triad):如果颜色方案只包括三种颜色,那么就会以120°的间隔选择3个颜色,如图(c)所示。三角形搭配是种能使得画面生动的搭配方式,即使使用了低饱和度的色彩。在使用三角形搭配的时候一定要选出一种色彩作为主色,另外两种作为辅助色。
以此类推,就得到了图1-3 R ggplot2默认颜色主题方案。
(a)单色搭配(Monochromatic);
(b)补色搭配(Complement);
(c)三角形搭配(Triad)
图1-5 三种不同颜色选择的色相环
![](https://i-blog.csdnimg.cn/blog_migrate/b22e9267c4e3b15cd7acf7626a8608d1.png)
我们对相同的数据图表对比不同的颜色效果,如图1-6带散点分布的箱型图所示。(a)-(c)的颜色主题方案分别对应的软件为Excel、Origin和R (ggplot2),图(c)使用的就是图1-3 所示的4种颜色的颜色主题方案。所谓“人靠衣装,佛靠金装”,符合美学规律设计的颜色主题方案往往能很大程度上提高图表的美观程度,如图(c)所示。所以,我们很有必要研究与讲解颜色主题方案的搭配。
(a)Excel默认颜色主题;
(b)Origin默认颜色主题;
(c) R ggplot2默认颜色主题
图1-6 不同颜色主题的图表效果
R语言作为经典的数据可视化语言,很大的优势就在于它的包(如经典的RColorBrewer包)提供了丰富的颜色主题方案,如图1-7所示。Origin 2017、Python(Seaborn包)等绘图软件都有参考与引入改颜色主题方案。该颜色主题方案主要可以分成三大类:单色系、多色系和双色渐变系(这个分类会在后文中详细说明)。或许你不知道,其实RColorBrewer包的颜色主题方案系列来源于一个颜色主题方案搭配网站:ColorBrewer 2.0 (http://colorbrewer2.org/#type=sequential&scheme=BuGn&n=3),如图1-7-2所示。该网站提供了大量的颜色搭配主题方案,可以供用户学习与使用。强烈建议大家登陆这个网站,自己操作与观看这里面的配色方案,由于版面有限不能全面地介绍ColorBrewer 2.0配色的各个系列与功能。从另一个角度说,可以将图1-7看成ColorBrewer 2.0网页颜色主题系列方案的精华版。
图1-7 RColorBrewer包的颜色主题方案
(https://github.com/timothyrenner/ColorBrewer.jl)
图1-7-2 ColorBrewer2.0网页界面
(http://colorbrewer2.org/#type=sequential&scheme=BuGn&n=3)
ColorBrewer 2.0的配色功能如此强大,它的颜色搭配原理又是什么样呢?其实,它的原理如图1-8所示:通过排列组合实现二值色系、单色系、双色渐变系和多色系等颜色主题方案。其中,最为常用的三种颜色搭配方法如图1-9所示。圆形分布的多色系(circular color systems)是一类特殊的多色系配色方案,如Python Seabron包的hls颜色主题方案。这类颜色方案适合时间类的周期性数据,如小时、天、月、年等有关的时序数据。
图1-8 图表绘制的颜色搭配原理
(http://www.personal.psu.edu/cab38/ColorSch/Schemes.html)
图1-9 图表绘制的颜色搭配三原则
![](https://i-blog.csdnimg.cn/blog_migrate/b22e9267c4e3b15cd7acf7626a8608d1.png)
我们毕竟不是专业的设计师,专业的设计师懂的自己根据配色原理与色相轮搭配颜色。如果自己配色,既费时费力,也不一定达到美观的效果。幸好,图1-3和1-7提供了诸多颜色主题方案供大家参考与使用。另外,R语言Wesanderson包、PythonSeaborn包和Colorbrewer2网页也提供了一系列新的颜色主题方案。
尤其需要强调的是R语言ggsci包提供了几个经典期刊的推荐颜色主题方案,包括《Nature》、《Science》等学术期刊。但是,这并不是说投稿这些期刊必须使用这些配色方案,而是说推荐使用,当然你可以选择使用其他颜色主题方案。所以,这些罗列了这么多颜色主题方案,毕竟“萝卜白菜,各有所爱”你只要选择1~2种自己喜欢的,然后就可以应用到自己绘制的学术图表中。
当你问我这幅图表使用哪个颜色主题方案比较美观的时候,我也没法确定。实践出真知。另外,由于不同的数据与图表,可能自己要多尝试不同的颜色主题方案,才能找出哪个颜色主题适合这幅图表。
Wesanderson包:https://github.com/karthik/wesanderson
Python Seabron包: http://seaborn.pydata.org/tutorial/color_palettes.html
Colorbrewer2:http://colorbrewer2.org/#type=qualitative&scheme=Set2&n=8
ggsci包:https://cran.r-project.org/web/packages/ggsci/vignettes/ggsci.html
![](https://i-blog.csdnimg.cn/blog_migrate/b22e9267c4e3b15cd7acf7626a8608d1.png)
刚刚提供给大家这么多颜色主题方案,怎么使用呢?在绘图软件中修改颜色,一般是通过RGB数值设定。这时候,我们就需要获取颜色方案中每个颜色RGB数值或者Hex颜色码,其可以通过以下几种方式获得相关颜色数值:
手动调整数据系列的RGB颜色值有时候觉得还是很麻烦,其实还有一种利用取色器的便捷方法,如PPT和AI软件都有取色器,但是Excel、Origin等绘图软件没有取色器。
对于Excel绘制的图表,可以将图表复制到PPT中,然后使用取色器,拾取自己想要的颜色主题方案的颜色。
对于Origin、R等绘图软件的图表,可以导出svg、eps等矢量格式的图片,然后使用AI软件打开后:1. 选择图片,选择“对象(O)”-“剪切蒙版(M)”-“释放(R)”;2. 在选择图片“对象(O)”-“复合路径(O)”-“释放(R)”;3.选择要修改的图表元素,然后使用取色器调整“填充”和“描边(边框)”颜色;4.导出相应的标量格式的图片,同时设定好图片的分辨率。
![](https://i-blog.csdnimg.cn/blog_migrate/b22e9267c4e3b15cd7acf7626a8608d1.png)
关于颜色的基础知识讲解这么多,所谓“实践出真知”,这里带大家一起来应用各个颜色主题方案,提升图表的美观性。对于多色系颜色方案的应用,大家很容易使用:直接选择一个颜色主题方案,然后修改数据系列的颜色,如图1-4所示。但是对于单色系和双色渐变系的颜色主题方案的应用,大家可能不是那么容易适应。所以,现在重点给大家讲解单色系和双色渐变系的颜色主题方案的应用。
图1-10(a)是使用Excel 绘制的默认多色系颜色方案的带误差线柱形图,图(b)是使用单色系颜色方案(蓝色系列:)改进的《Science》期刊上的图表。虽然数据是类别型,但是使用单色系颜色主题方案更加美观。
(a)Excel多色系颜色方案;(b)单色系颜色方案
图1-10 柱形图的单色系颜色方案的应用
图1-11(a)是使用Excel 绘制的默认多色系颜色方案的曲线散点图,图(b)是使用单色系颜色方案(橙色系列:)改进的曲线散点图,单色系颜色主题方案就是根据数据系列的数值类别设定,亮度随数值从低到高,如图例所示。图(c)是使用单色系颜色方案再改进的曲线图,省去散点数据标记,只留下曲线以暂时数据系列的规律。
(a) Excel多色系颜色方案的散点图曲线图; (b)单色系颜色方案的散点曲线图;(c)单色系颜色方案的曲线图
图1-11 散点曲线图的单色系颜色方案的应用
图1-11-2(a)是使用红色和蓝色两种不同颜色表示相关系数的数值,蓝色表示负值,圆圈越大表示负相关越大,红色表示正值,圆圈越大表示正相关越大。但是当时有双色渐变系颜色主题()改进图表,如图(b)所示:借助圆圈填充颜色的深浅和圆圈的大小两个视觉暗示,更加清晰地表达了数据,更便于读者观察数据之间的关系。中间白色对应数值就是相关系数的分界点0。
(a) R多色系颜色方案;(b)双色渐变系颜色方案
图1-11-2 相关系数图的双色渐变系颜色方案的应用
图1-12为时间序列的柱形图,图(a)使用蓝色填充柱形数据系列,仅仅使用长度视觉暗示表达数据。但是当时有双色渐变系颜色主题()改进图表,如图(b)所示:中间白色对应数值就是相关系数的分界点温度0,当温度越高,红色更深;当温度越低,蓝色更深。借助柱形颜色的深浅和长度两个视觉暗示,更加清晰地表达了数据,更便于读者观察时序数据的变化规律。
(a) R多色系颜色方案;(b)双色渐变系颜色方案
图1-12 时间序列柱形图的双色渐变系颜色方案的应用
(a) R多色系颜色方案
(b)双色渐变系颜色方案
图1-13 条形图的双色渐变系颜色方案的应用
我们平时绘制图表除了要注意颜色主题外,同时还要注意颜色的透明度(Transparency)。颜色的透明度也是一个重要的设置参数,尤其再处理数据系列之间的遮挡问题特别有效。绘图软件中基本都有颜色透明度的设定参数。颜色透明度的设定还是适合于高密度散点图的绘制,通过颜色深浅可以观察数据的分布情况。
(a)设置透明度前; (b)设置透明度后
图1-13-2 颜色透明度的应用
公众号后台回复关键字即可学习
回复 R R语言快速入门及数据挖掘
回复 Kaggle案例 Kaggle十大案例精讲(连载中)
回复 文本挖掘 手把手教你做文本挖掘
回复 可视化 R语言可视化在商务场景中的应用
回复 大数据 大数据系列免费视频教程
回复 量化投资 张丹教你如何用R语言量化投资
回复 用户画像 京东大数据,揭秘用户画像
回复 数据挖掘 常用数据挖掘算法原理解释与应用
回复 机器学习 人工智能系列之机器学习与实践
回复 爬虫 R语言爬虫实战案例分享