附录A

A.1 为地图配上专业的颜色

要为数据地图配上专业的颜色,不能仅凭我们的肉眼和感觉,还需要科学的方法和手段。

colorbrewer2.org是一个专门提供地图配色方案的网站,简单易用,图A-1是其网站界面截图。alt

alt

图A-1 网站colorbrewer2.org提供专业的地图配色方案

利用这个网站,只需要如下几步的设置,我们就可以得到一个科学、精确、专业的地图配色方案。

1.选择数据分档数(Number of data classes on your map)

可选择从3~12级的分档。对于分档填色的地图,一般建议使用5~7个分档及相应的颜色,太多或太少都可能影响沟通效果。

2.选择数据属性(The nature of your data)

在地图上反映的数据可以分为3种类型。

●sequential:连续型,一种颜色从浅到深变化,反映从小到大的数据。

●diverging:二分型,从一种颜色过渡到另一种颜色,反映从负到正的数据。

●qualitative:定性型,使用不同类型的颜色,来反映分类型的数据。

3.选择颜色主题(Pick a color scheme)

根据前面的设置,会出现不同的颜色主题供选择。该网站还提供了根据用途进行过滤的可选项,如色盲友好型、彩色打印友好型、复印友好型等。

4.选择颜色制式(Pick a color system)

可选择RGB、CMYK、HEX共3种颜色表示方法,其中RGB多用于计算机处理,CMYK多用于印刷领域。我们选择RGB模式。

5.导出颜色(Export your colors)

点击屏幕下面的“Export your colors”,会弹出一个对话框,可以选择直接复制粘贴RGB值,也可选择下载一个包含所有颜色配置的Excel文件。

在图A-1中,我们通过设置得到了一个从深红色变化到湖蓝色的8档颜色组合,可用来制作数据范围从负数变化到正数的地图,这个配色方案在商业杂志数据地图上非常常见。

为方便本书读者,我已经将这个网站的全套配色方案整理到了一个Excel文件中,读者只需要选择满意的颜色方案,应用到自己的数据地图模板中即可。alt

A.2 在Excel中使用自定义的颜色

默认情况下,我们在数据地图中所要使用的按比例、成梯度的颜色,在Excel的颜色面板中是没有的,因此无法直接取用设置。

以图A-2的数据地图为例,其反映数据大小的配色非常精彩,可拾取其配色方案的RGB值,如图中右侧所示。

alt

图A-2 一组精彩的地图配色方案

如何在Excel中使用自定义的颜色呢?

如果你使用Excel 2007以上版本,其颜色面板中有70个格子可供选用。要使用除此之外的颜色,单击最下面的其他颜色,在弹出的对话框中就可以直接指定任意RGB的颜色,如图A-3所示。因此,Excel 2007以上版本中颜色是没有限制的,逐一对图例单元格设置填充色即可。

作为更简单的办法,你可以打开范例包中的“A.1 ColorBrewer地图配色模板.xlsm”文件,选择满意的配色方案,将其所在单元格区域复制到你的地图文件中相应位置即可。

如果你使用Excel 2003,情况要麻烦些。其颜色面板中有56个格子可供选用,对绝大部分用户来说,这就是Excel中可以使用到的所有颜色。如何使用除此之外的颜色呢?这里的要点就是,虽然一个Excel文件中最多只能使用56种颜色,但我们可以使用任意的56种颜色。

alt

图A-3 在Excel 2007以上版本中可以直接指定任意的颜色

在菜单工具→选项→颜色中,选定某个颜色格子,单击修改,同样也有个对话框可以让我们指定任意RGB的颜色,如图A-4所示。按此方法一一设置想要的颜色到面板中,然后就可以通过面板直接取用了。

alt

图A-4 在Excel 2003中设置自定义颜色,第2行已被一一修改

Excel 2003与2007版本的差别在于,2007中可以直接指定任意颜色,2003中则需要先设置后使用。

如果对以上操作录制宏,会发现关键代码就是一句,如:

ActiveWorkbook.Colors(9)=RGB(142,15,46)

其中colors(n)是Excel存储56色的索引号,它们在颜色面板上的分布如图A-5所示。

alt

图A-5 Excel 2003中的56色颜色面板索引号

因此,我们可以使用宏来批量设置颜色。假设要将图A-2所示的配色方案设置到地图文件颜色面板的第2行,按Alt+F11键进入VBA编辑窗口,输入图A-6所示的宏代码。

alt

图A-6 批量设置颜色面板的宏

运行这段代码后,Excel 2003颜色面板的第2行会自动设置为指定的颜色,非常高效。然后就可以在地图制作中通过颜色面板直接取用这些颜色了。

A.3 如何录制并修改宏代码

本书中大部分地图形式的做法都涉及VBA,那么是否需要读者都掌握VBA编程技术呢?答案是并不需要,Excel的宏录制器将是我们的有力武器。

通常情况下,大多数人并不掌握VBA开发技术,宏代码该如何编写我们并不知道。但我们可以通过录制宏的方式来获得关键代码,然后修改为自己需要的程序。

宏录制器就像一个录像机,它可以把你的绝大部分操作都录制下来,转换为宏代码。运行这些代码的效果就是把刚才的操作重新进行一次。如果我们将宏代码进行简单的编辑、修改,就可以快速批量完成很多重复性操作。

在Excel 2003中,单击菜单工具→宏→录制新宏即可打开录制宏的对话框,如图A-7所示。

alt

图A-7 Excel 2003版本的宏录制器

在Excel 2007以上版本中,宏录制器默认是看不见的,需要通过设置调出来。以Excel 2010版本为例,在菜单文件→选项→自定义功能区→主选项卡下,勾选开发工具,确认之后,在Excel界面的主选项卡中就会出现开发工具,里面就有录制宏的按钮,如图A-8所示。另外,在Excel 2010左下角的状态栏上,也有个录制宏的小按钮,可以快速进入。

alt

图A-8 Excel 2010版本的宏录制器

如何进行录制宏操作呢?以3.1节的分档填色地图做法为例,我们要用某个单元格的填充色去填充某个地图图形,因此需要知道:如何获知一个单元格的填充色,如何设置一个图形的填充色。那么我们可以进行以下的录制宏操作。

单击开发工具选项卡下的录制宏,出现如图A-9所示的对话框。

alt

图A-9 录制新宏的对话框

可以直接单击确定按钮,Excel将对接下来的操作录制宏。下面进行如下的操作:

①选中单元格A1;

②设置单元格A1的填充色为某种颜色;

③选中某个地图图形;

④设置该地图图形的填充色为某种颜色。

然后,单击停止录制按钮,终止录制宏操作。按Alt+F11键进入VBA编辑窗口,会看到如图A-10所示的界面。

alt

图A-10 通过录制操作得到的宏代码

左侧的工程窗口中,在模块目录下有个“模块1”对象,右侧名为Macro1的宏代码就是刚才录制宏操作的结果[1],其中有两句关键代码:

①Selection. Interior. ColorIndex=1(设置A1单元格填充色):

②Selection. ShapeRange. Fill. ForeColor. SchemeColor=8(设置地图图形填充色)

我们将其组合起来,让地图图形的填充色=A1单元格的填充色,并略作修改,再加入按区域个数的循环,得到如图A-11所示的代码。这段宏完成的任务就是:对每个区域的图形使用对应的颜色号(如color1)作为名称所指向的单元格的填充色来填充,绘制出一个分档填色的热力地图。

alt

图A-11 修改录制的关键代码编写的宏过程

当然,在将录制宏修改为自己的VBA代码的过程中,还是需要一点点编程的概念的。VBA是一种面向对象的语言,还是比较容易读懂的,即使不懂,按F1键或者通过Google搜索也可以获得相应的帮助。另外,使用宏主要是为了完成一些重复性的任务,因此你需要知道一些循环结构,如for i=1 to n…next,for each…in…next等。

本书中的绝大部分宏过程都是采用这种先录制、后Google、再修改的方法编写出来的,基本属于依葫芦画瓢。尤其是4.1节的图表式数据地图中,将图表复制为图片,再将图片粘贴到气泡图的数据点上,这种代码估计谁也不会知道该怎么写,但录制宏可以轻松获得关键代码。

所以,你完全不必担心自己不会编写宏代码,录制宏和Google将帮助你搞定!

A.4 使用照相机整合地图图形

本书介绍的各种地图做法中,都使用了一种叫做“拍照”的技术,将各区域地图图形整合为一幅整体的地图,以便导出引用到其他应用。什么是“拍照”呢?

Excel有一个隐藏很深的功能,叫做照相机,一般情况下界面上并不可见,需要通过设置才能调出这个功能按钮。

在Excel 2003版本中,单击菜单工具→自定义→命令→工具,在右侧的命令列表中可以找到一个照相机的图标,用鼠标将它拖拽到工具栏上合适位置,释放鼠标后可以看到工具栏上出现了一个照相机图标,如图A-12左侧所示。

alt

图A-12 从Excel 2003和Excel 2010中调出照相机功能

在Excel 2007以上版本中,在菜单文件→Excel选项→快速访问工具栏,将左侧的命令列表过滤为“不在功能区的命令”,找到“照相机”(如图A-12的右图所示),添加到右侧的快速访问工具栏列表,确认后在Excel的顶部即可看到一个照相机按钮。

照相机命令用来对一个单元格区域进行“拍照”,拍照后可以生成一个与源单元格区域一致并且同步联动的图片。该图片将包含源区域内的所有对象,源区域内的任何改变也可以立即反映在该图片中。因此我们利用此功能来将各区域独立的地图图形拍照整合为一幅整体的地图。

以3.1节的分档填色做法为例,各省独立的地图图形放置在U11:AB32区域,选中此区域,用鼠标单击工具栏上的照相机图标,鼠标会变成一个十字,在另外的空白区域如单元格L11处单击一下,即可生成一个拍照图片。该图片与U11:AB32区域的显示一模一样,但已经是一个组合的图形对象,非常便于复制导出。此后,如果我们修改了C列的数据,刷新地图,此拍照图片也会自动刷新。

不过,这种同步联动仅限于Excel文件之内或之间,如果将拍照图片复制到PPT文件,PPT中的图片是不会同步更新的。

A.5 使用散点图标签修改工具

在3.5节、4.2节等章节中,都运用到了标签修改工具XY Chart Labeler。这是Excel高级作图的常用工具,这里做简单介绍。

在Excel中创建散点图和气泡图时,若要显示数据标签,无论你如何设置,都无法让其显示为数据点的名称,例如图3-12中的C列省份名称。这个问题是Excel的缺陷,也促使了标签修改工具XY Chart Labeler的产生。

标签修改工具XY Chart Labeler可方便地为散点图(或其他图表类型)设置数据标签为指定的引用区域。读者可在以下地址下载这个小工具:

http://www.appspro.com/Utilities/ChartLabeler.htm![alt](/uploads/projects/s10435804/images//00095.jpeg)

下载安装后,在Excel 2003的工具菜单下会多出一个XY Chart Lables的子菜单。如果没有出现的话,可在菜单工具→加载宏对话框中勾选XY Chart Labeler。

在Excel 2007以上版本中,直接安装这个工具后可能并不会出现在系统界面,需要手动加载。

以Excel 2010为例,在菜单文件→选项→加载项下,单击最下面管理加载项右侧的转到,在弹出的加载宏对话框中选择浏览,找到XY Chart Labeler的安装位置,一般是C:\Program Files\AppsPro\ChartLabeler,选择XYChartLabeler.xla。这样应该就能在系统的加载项选项卡下看到XY Chart Labels的按钮了,如图A-13所示。若看不到加载项选项卡,可在菜单文件→选项→自定义功能区对话框的主选项卡下勾选加载项。

alt

图A-13 Excel 2010中安装的XY Chart Labels插件

XY Chart Labeler的使用方法是这样的:假设要让图4-5中的散点图显示数据标签为G列的数据,即地名+数值。首先选中散点图的数据序列,然后选择XY Chart Labels→Add Chart Labels,在弹出的对话框中,“Select a Label Range”处用鼠标指定为G6:G39,这是我们为散点图准备好的数据标签,单击“OK”按钮,散点图各数据点上就会出现G列的数据标签,如图A-14所示。

alt

图A-14 运用XY Chart Labeler为散点图指定数据标签

XY Chart Labeler所添加的数据标签是普通的Excel图表数据标签,可以通过Excel设置其显示位置、对齐方式等属性。

A.6 数据地图服务资源

地图素材资源alt

http://www.editablemaps.com/

从名字可以看出来,这个网站专门提供可编辑的地图素材。各类层级的地图图形应有尽有,不过都是收费的。

各类PPT模板和素材网站一般也都提供可编辑地图,用于PPT制作和演示。虽然这些地图都是收费的,但我们还是可以通过网页浏览学习他们对地图的处理和应用方式。如:

http://www.24point0.com/shop/china-and-taiwan-editable-ppt-map-cm-007/

http://slideshop.com/powerpoint-maps

http://www.presentationload.com/en/Maps-Flags/?cur=1

http://www.poweredtemplates.com/powerpoint-maps/china-powerpointmaps/00003/0/index.html

http://www.themegallery.com/english/themes/themes.asp?pt=M

http://www.presentationmagazine.com/free-powerpoint-maps-12.htm

此外,还有一些网站提供开发类的地图工具,如:

http://www.imapbuilder.com/,交互式flash地图制作工具

http://www.flashimap.com/,交互式flash地图资源

http://www.fusioncharts.com/maps/maplist.asp,网页地图开发工具

需要注意的是,这些国外网站提供的中国地图大多数都有台湾问题和边界问题,使用时需要注意检查。

在本书的范例包中,已经为大家提供了世界地图、各洲地图、中国地图以及各省的地图图形素材,以及各种形式的数据地图模板,大家可以直接使用。当你看过了上面这些网站的素材收费标准,再看这些地图素材和模板,就会明白本书提供的范例包是多么的超值了!alt

在线数据地图制作网站

http://www.targetmap.com

这个网站可以根据你上传的Excel文件,自动生成一个数据地图,并可以进行一些格式设置,然后下载或者发布。若制作中国地图,上传Excel文件的省名需要使用拼音名,参见附录A.7的“拼音名”一列。

该网站的用户创建并发布了一些有趣的数据地图,图A-15就是两个趣味地图例子,大家可以自己在线看看,这里就不解读了。alt

alt

图A-15 Average Breast Cup Size in the world(左), The Penis Size Worldwide(country)(右)

需要说明的一点是,用这个网站制作世界地图还好,但制作中国地图时地图的视角不佳,且不包含台湾,请注意。

Google地图API

Google公司的图表工具API接口提供了两款数据地图制作接口,适合网页开发人员调用。

http://code.google.com/apis/visualization/documentation/gallery/geomap.html

http://code.google.com/apis/visualization/documentation/gallery/intensitymap.html

作为地图之外的地图

至目前为止,本书都是在商业数据分析与演示领域讨论地图。其实,在有一类人的眼中,地图远没有这么乏味,他们就是地图爱好者。在他们看来,地图更是一件艺术品类,被赋予了深厚的知识、文化和情感。

http://yanglang.blshe.com/

一位资深地图收藏者的博客,博主是传媒界名人杨浪先生。其随笔文集《地图的发现》是很有意思的一本书,介绍了很多与地图有关的历史和知识。

http://blog.sina.com.cn/dtxsh

一位地图爱好者的博客,自称“地图先生”,自办民间刊物《地图爱好者》10余年,其对地图的痴迷程度可见一斑。

http://romangu.blog.163.com/

一位地图爱好者的博客,其博客说明为:记录行的轨迹,引导心的飞翔——身未动,心已远;身不灭,心无疆!多么诗意的文字啊,博客中有很多关于地图的历史、故事,甚至还有余光中的散文《地图》:

“就是那张破地图,曾经伴他自重庆回到南京,自南京而上海而厦门而香港而终于到那个岛屿。一张破地图,一个破国家,自嘲地,他想。密歇根的雪夜,盖提斯堡的花季,他常常展视那张残缺的地图,像凝视亡母的旧照片。”

“走进地图,便不再是地图,而是山岳与河流,原野与城市。走出那河山,便仅仅留下了一张地图。当你不在那片土地,当你不再步履于其上,俯仰于其间,你只能面对一张象征性的地图,正如不能面对一张亲爱的脸时,就只能面对一帧照片了。”

这文字,令人不忍卒读。

A.7 各省份名称列表

alt

alt

A.8 送给读者的一份礼物

在全书的最后,我为大家奉上一份小礼物。

前面讲了这么多,我们都是在为老板、为客户制作地图。任何事情做到一定程度,都会有索然无味的一天,有没有考虑过为自己制作一份地图呢?

现在,请在下面的空白地图中,把你生活过、学习过、恋爱过的地方,开心过或者伤心过的地方,已经旅行过或者计划要旅行的地方……用彩色的笔标示出来吧,这将是一份属于你自己的人生地图!

在地图上回顾和规划自己的人生,是不是特别有一种不一样的视野和意义呢?这种全新的视野感,使我想起作家阿兰德·波顿在《旅行的艺术》中描述他在飞机上俯瞰大地的感觉:

“这种视野上新的优势使地面上的景观整饬有序,一目了然……那些看上去布局混乱的街道,现在看来似乎是精心规划的条格布局。照此思路,我们的生活是如此狭隘,就像井底之蛙:我们生活在那个世界里,但我们几乎从未像老鹰和上帝那样睹其全貌。”

欢迎将你的人生地图扫描或者拍照,发布到新浪微博或发送邮件给我,我会在博客上与所有读者一同互动分享你的创意人生!

注释

[1] 该图中代码为Excel 2003下的录制结果,Excel 2007下可能有所不同,但后续修改方法大同小异。