商业图表非常讲究图表的配色,要有专业感、商务感,不艳不俗、不炫不媚。
如何给图表配色,我从来不想去学习那些色彩理论,什么色相、明度、纯度什么的,那是设计人员的事情,数据分析人员需要了解一点设计知识,但不需要变成设计人员。
在《图表之道》中,我们推荐的方法是借鉴商业媒体图表的成功配色方案。那时候,我的办法是搜索和精选好的商业图表案例,用取色器取出它们的配色,运用到自己的图表中。就是这种简单、略显笨拙的方法,却开启了从 Excel 图表到商业图表的大门,走出一条细分的路来。
近年来,R语言开始流行,我也了解了一下R语言里 ggplot 的作图,知道了 ggthemes 主题包。它将一些期刊、软件的图表风格进行了整理,做成扩展包,方便地格式化出不同风格的图表,可参考去年的帖子,ggplot绘制杂志风格商务图表。我们也可以借鉴这个成果,运用到 Excel 作图里面来,效率会高很多。
ggthemes 有多种风格的主题,其中最有商务气质的当属 wsj 和 economist 主题,也就是华尔街日报和经济学人的风格。这一篇帖子,就是要从 ggthemes 里提取华尔街日报的图表配色方案。
1、安装和加载 ggthemes
安装 ggthemes 包很简单,输入以下命令即可:
> install.packages("ggthemes")
加载 ggplot 和 ggthemes 包:
> library(ggplot2)
> library(ggthemes)
2、wsj 图表的序列用色
我们虚拟一组数据做个简单的柱形图,预览 wsj 颜色组合的显示效果。
df <- data.frame(x=1:6, y=1:6)
p <- ggplot(df, aes(x=x, y=y, fill=factor(x))) + geom_bar(stat="identity")
p + scale_fill_wsj() + theme_wsj() + ggtitle("wsj,ExcelPro")
这是 wsj 主题的默认效果,scale_fill_wsj() 和 theme_wsj() 里面可以进一步指定参数。
scale_fill_wsj() 设置序列的填充颜色,有5种参数,分别是 colors6、rgby、red_green、black_green、dem_rep 五组颜色,显示效果如下。
p+scale_fill_wsj("colors6", "")+theme_wsj()+ggtitle("wsj,ExcelPro")
p+scale_fill_wsj("rgby", "")+theme_wsj()+ggtitle("wsj,ExcelPro")
p+scale_fill_wsj("red_green", "")+theme_wsj()+ggtitle("wsj,ExcelPro")
p+scale_fill_wsj("black_green", "")+theme_wsj()+ggtitle("wsj,ExcelPro")
p+scale_fill_wsj("dem_rep", "")+theme_wsj()+ggtitle("wsj,ExcelPro")
3、wsj 图表的背景用色
theme_wsj() 里面可以设置图表的背景色,有4种参数,分别是 brown、gray、green、blue,显示效果如下。序列颜色和背景颜色可以有不同的搭配组合。
p+scale_fill_wsj("colors6", "")+theme_wsj(color="brown")+ggtitle("wsj,ExcelPro")
p+scale_fill_wsj("colors6", "")+theme_wsj(color="gray")+ggtitle("wsj,ExcelPro")
p+scale_fill_wsj("colors6", "")+theme_wsj(color="green")+ggtitle("wsj,ExcelPro")
p+scale_fill_wsj("colors6", "")+theme_wsj(color="blue")+ggtitle("wsj,ExcelPro")
4、wsj 图表的配色规范
以上是 wsj 主题不同配色组的显示效果。如何知道这些颜色的具体 RGB 值呢,还是用 colorpix 去吸吗?现在不需要了,直接显示参数就可以了。输入命令:
> print(ggthemes_data$wsj$palettes)
就得到了 wsj 主题的各组配色信息,包括颜色名和颜色值。问:这种命令和参数你怎么会知道的?答:因为我琢磨了很久啊。
$rgby
yellow red blue green
"#d3ba68" "#d5695d" "#5d8ca8" "#65a479"
$red_green
green red
"#088158" "#ba2f2a"
$black_green
black gray ltgreen green
"#000000" "#595959" "#59a77f" "#008856"
$dem_rep
blue red gray
"#006a8e" "#b1283a" "#a8a6a7"
$colors6
red blue gold green orange black
"#c72e29" "#016392" "#be9c2e" "#098154" "#fb832d" "#000000"
输入以下命令可显示 wsj 主题的背景色:
> print(ggthemes_data$wsj$bg)
gray green blue brown
"#efefef" "#e9f3ea" "#d4dee7" "#f8f2e4"
把这些信息复制到 Excel 里,进行如下操作(注意都是 Excel 知识和技巧的运用哦):
* 利用“分列”功能进行规整
* 利用 hex2dec 函数转换为我们熟悉的 RGB 值
* 编个小宏显示出对应的颜色
我就制作出这样一份华尔街日报图表颜色规范表。
这份颜色规范表你可以打印出来备查,做图时参考使用。用上这样的颜色组合,你的图表会马上变得专业起来!和微软的默认效果、网络教程的花哨效果,都完全不一样!
5、制作 Excel 里的 wsj 颜色主题
如果能把上述颜色规范做成 Excel 的颜色主题,则用起来会更方便。这里 colors6 配色组是6个颜色,刚好适合 Excel 里颜色面板的6个格子,再选择一个背景色比如 brown,所以可以在 页面设计 - 颜色主题 - 新建主题,自定义为颜色主题 ExcelPro_wsj_colors6.xml。
在这样的颜色主题下,插入的图表默认就具有 wsj 风格,不再需要一一去设置颜色,是不是提高效率太多了呢!
其他配色组由于颜色个数少,不是很合适做成颜色主题,要用的话可以直接看打印贴纸吧。这时我倒怀念起 2003 版时的 56 色面板来,那时候我可以放置 56 个自定义颜色。
6、例图对比
下面我们提供几个包含较多颜色的华尔街日报图表案例,可以看到这些颜色的运用。你能把这些例图的颜色和上面的颜色组、背景色对应起来吗?
7、文件下载
在微信公众号 iamExcelPro 发送消息 “colors6”,可以下载这份《华尔街日报图表颜色规范表-打印贴纸.pdf》
8、相关课程
想制作像《华尔街日报》一样专业的图表?这里有《向华尔街日报学图表》两季课程,你将学会超过50个具有华尔街日报特色的图表,学会各种高级作图的思维和技巧。课程包含 讲解视频 + PDF图文教程 + Excel源文件,诚意满满。
课程网址:http://study.163.com/series/59002.htm