《用地图说话》之:十字绣中国热力数据地图

作图思路:

准备一块300*300小单元格组成的区域,对照地图图形,在每个省图形范围内的单元格填入该省的数据,然后对这些单元格应用条件格式->色阶,就形成了一幅热力地图。这一做法参考了Jorge Camoes 的帖子http://t.cn/zTDvGNb。

不过本帖对其继续改进,利用条件格式设置单元格的边框线,来绘制省界线条,避免了地图图形的线条与单元格之间吻合精度不够的问题,使地图更整洁干净。

作图步骤:

1、在MapCells工作表中准备约300*300个单元格区域,设置行高列宽,使单元格呈小正方形。把这个区域定义名称为MapCells,便于后续选中设置。

2、在这个区域上放置一个透明的中国地图轮廓图形。《用地图说话》范例包中提供了这样的素材,复制粘贴过来,调整大小,设置无填充色即可。

3、依据地图图形,在每个省图形框住的格子里,填写公式,查找引用该省的指标值。以新疆为例,新疆的图形框住的单元格,其公式均填写为:

=VLOOKUP(“新疆”,mydata,2,0)

其中mydata是在Data表中放置的省名+指标数据。如下图所示。

这一步是本做法的主要步骤。由于格子数有约300*300个之多,这显然是个绣花般的工作,所以我称之为十字绣做法。美国地图还好,州界都横平竖直的,打点较容易,中国地图的省界都蜿蜒曲折的,打好点需要巨大的耐心。

幸好的是,我在网上找到了一个Excel文件,它有约200*250个格子,格子里填写的是1~34个数字,对应每个省,形成一幅中国分省地图。不知道它原来是怎么填写的,反正看起来精度还不错。用宏把1~34的数字替换成对应的vlookup公式,就自动化地完成了十字绣这个细活。过程就不讲了,反正电脑也被折腾死了,200*250个格子要查找填写呢。

4、绣完花后,在MapCells表通过名称框选中MapCells区域,根据需要为其设置条件格式->色戒。咦,错了,应该是色阶。根据指标需要选择一种色阶样式,这里你可以进行充分的配色自定义。

5、在Data表准备10个单元格,取值为指标值范围的10等分,可以用公式填写:

=PERCENTILE($D$6:$D$42,10%)

后面为20%、30%……100%。为这些单元格设置与前面相同的条件格式->色阶效果,作为地图的图例。

考虑到可能需要手动指定图例最大最小值的范围,要保证地图和图例的条件格式->色阶效果一致,可以把D41、D42处的最大最小值引用到地图区域MapCells里的某个格子,这样地图区域和图例区域拥有一致的最大最小值,色阶效果也就会一致。具体见范例文件中MapCells区域图例遮住的位置。

6、把data表的图例单元格区域拍照引用到MapCells表的地图区域的左下角,放大至合适。再把地图区域MapCells拍照引用到Report表,缩小到合适,完成地图模型。

现在,在Data表输入或改变指标值,Report表的地图就可以刷新,测试地图模型并确认正确性。

在之前提供的范例文件里,由于我是先有格子,再用地图图形对齐格子的,并没有实际进行十字绣打点,所以边界吻合并不佳,当时也无暇去精细化。

update@20140222:后来想到的做法是,不使用这个地图图形,而是对MapCells区域使用条件格式,与周边的单元格进行比较判断,是否为省界,而自动设置边框线,来绘制各省边界。条件格式设置如下图:

选中MapCells区域,条件格式->新建规则,新建4条规则:

  • =J10<>J9,那么显示上边框线
  • =J10<>J11,那么显示下边框线
  • =J10<>I10,那么显示左边框线
  • =J10<>K10,那么显示右边框线

比较判断的示意图如下:

注意都是以相对地址的形式输入公式,那么整个MapCells区域的每个格子都会与它周围的4个格子进行比较,不一致就显示相应的边框,从而形成各省的边界线。

最后绘出的地图如下,非常干净,并且边界线很有一股写意的意味。要导出到PPT、word中,只需要复制这个拍照图片对象即可。

本例做法涉及到的知识点:Vlookup查找,条件格式-色阶,一般条件格式,拍照引用,以及耐心。

原文发布于微信公众号 - PPV课数据科学社区(ppvke123)

原文发表时间:2014-10-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

用Python制作迷宫GIF

问:我是一个Python迷,并且对迷宫的生成和迷宫解决的办法非常感兴趣。我很羡慕别人能够做出生成迷宫的动画。我如何能够用Python自己做一个迷宫动画,然后把我...

19200
来自专栏练小习的专栏

[译]响应式图像

自从2010年Ethan Marcotte开始讨论响应式网页设计,开发者和设计师们竞相寻求处理响应式图片的方法。这的确是一个棘手的问题 ,因为我们对同一个网站在...

20890
来自专栏数据小魔方

think-cell chart系列18——复合图表与次坐标轴

今天跟大家分享的是think-cell chart系列的第18篇——复合图表与次坐标轴。 今天要跟大家讲解如何在think-cell chart中开启次坐标轴,...

1.3K70
来自专栏偏前端工程师的驿站

CSS魔法堂:小结一下Box Model与Positioning Scheme

前言  对于Box Model和Positioning Scheme中3种定位模式的细节,已经通过以下几篇文章记录了我对其的理解和思考。 《CSS魔法堂:重新...

19160
来自专栏企鹅号快讯

浅谈 Web 图像优化

前端优化有很多,图像优化也是其中的一部分。无论是渐进增强还是优雅降级,图像优化成为了开发上不可忽视的一部分。 知其然,须知其所以然 图像优化的前提是需要了解图像...

22290
来自专栏CDA数据分析师

技能 | 如何使用Python将文本转为图片

有时候,我们需要将文本转换为图片,比如发长微博,或者不想让人轻易复制我们的文本内容等时候。目前类似的工具已经有了不少,不过我觉得用得都不是很趁手,于是便自己尝试...

62170
来自专栏进步博客

[译]响应式图像

自从2010年Ethan Marcotte开始讨论响应式网页设计,开发者和设计师们竞相寻求处理响应式图片的方法。这的确是一个棘手的问题 ,因为我们对同一个网站在...

10020
来自专栏大数据风控

如何在R中绘制热力地图

一、首先绘画出地图map 地图(map) 按一定的比例运用符号、颜色、文字注记等描绘显示地球表面的自然地理、 行政区域、社会经济状况的图形。 地...

428100
来自专栏Java与Android技术栈

图像中二维码的检测和定位

所谓开操作是指先腐蚀后膨胀的操作。在之前的文章二值图像分析:案例实战(文本分离+硬币计数)曾经介绍过开操作的用途。

32530
来自专栏腾讯社交用户体验设计

[ISUX译]响应式图像 - 腾讯ISUX

10810

扫码关注云+社区

领取腾讯云代金券