R语言

如何做一个好色之“图”(1):从 ggthemes 提取华尔街日

2016-11-26  本文已影响2919人  刘万祥ExcelPro

商业图表非常讲究图表的配色,要有专业感、商务感,不艳不俗、不炫不媚。

如何给图表配色,我从来不想去学习那些色彩理论,什么色相、明度、纯度什么的,那是设计人员的事情,数据分析人员需要了解一点设计知识,但不需要变成设计人员。

在《图表之道》中,我们推荐的方法是借鉴商业媒体图表的成功配色方案。那时候,我的办法是搜索和精选好的商业图表案例,用取色器取出它们的配色,运用到自己的图表中。就是这种简单、略显笨拙的方法,却开启了从 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

上一篇下一篇

猜你喜欢

热点阅读