分享

热力型数据地图(HeatMap)做法详解

 baoyide225 2015-06-16
热力型数据地图(HeatMap)做法详解

(文 / ExcelPro的图表博客)

小博的日志《Excel版中国数据地图工具 》介绍了一个用excel做中国数据地图的办法,得到很多朋友的喜欢,并且都希望能详细了解制作方法,以便进一步DIY当地的数据地图。最近抽空整理了做法详解,供大家参考。因制作过程还是有些复杂的,如果有叙述不够清晰的地方,欢迎提出。

-------------------------------------


作图思路:我们为每个区域准备一个自选图形,按照其数值大小,根据分档阀值、颜色图例,对自选图形填充以相应的颜色,完成一个热力地图。

 

地图图形的准备

首先,在网上找到一个矢量格式的地图文件。所谓矢量格式,是使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,其文件后缀名一般为.WMF.AI.EPS.CDR等。Excel可以读取.WMF格式的文件,其他格式的一般需要专门的软件打开。导入Excel后,该地图可以打散为一个个的自选图形,每个自选图形对应一个区域。

如果你要做比较小的地区的数据地图,譬如武汉市分为江汉区、武昌区等,网上可能无法找到相应的矢量地图,这时我们可以自行绘制。

●          找到一个当地的地图图片,一般JPG格式的地图还是很好找的,导入Excel

●          在放大视图下,使用绘图工具栏->自选图形->线条->自由曲线,按照地图轮廓进行勾描,每个区勾描成一个封闭小块,最后形成一个全市分区的自选图形地图。这个细活需要花一点功夫,但一次完成长期使用,还是值得的。


地图模型的构建

有了地图图形后,我们开始制作地图的引擎模型。

假设我们的数据源如下,例子文件中D列数据为各省2008GDP总值。

1、为自选图形命名。

我们用每个省的拼音字母为其图形命名。如选中湖北省的图形,在左上角的名称框中输入湖北的拼音名hubei,回车,则这个图形被命名为hubei,后面会用这个名称来引用这个图形。逐一完成所有区域图形的命名。

 

很多公司需要按大区进行分析,如华东区、华南区等等,这时我们可以将某几个省的图形组合起来之后再命名。这时候你的数据源也要按华东区、华南区等进行组织。简言之,将大区作为一个区。

2、设置数据分档阀值和图例。

假设我们要把各省GDP数据分为5个层级进行分档填色,在I列设置填色样式,J列填入文字标签,注意I8J12区域在后面将被拍照引用为图例。在L列设置分档阀值,填入J列标签的下限,M列是为引用准备的名称。

 

注意在设置分档间距、颜色深浅时,二者应该呈线性比例变化。推荐颜色的的设置方式是使用同一色调的不同饱和度。当有负数时,可从一个色调渐变到另一个色调。

3、为模型定义名称和公式。

RegData

=Datamap!$C$8:$D$38

源数据区域

ActReg

=Datamap!$K$17

临时存放“当前区域”的拼音名,如hubei

ActRegValue

=Datamap!$K$18

临时存放“当前区域”的指标值,如8633

=VLOOKUP(ActReg,RegData,2,FALSE)

ActRegCode

=Datamap!$K$19

临时存放“当前区域”的颜色代码,如color4

=VLOOKUP(ActRegValue,L8:M12,2,TRUE)

color1

=Datamap!$I$8

填色代码1,指向I8

color2

=Datamap!$I$9

填色代码2,指向I9

color3

=Datamap!$I$10

填色代码3,指向I10

color4

=Datamap!$I$11

填色代码4,指向I11

color5

=Datamap!$I$12

填色代码5,指向I12

4、制作填色按钮。

绘制一个按钮,为其指定如下宏代码。

―――――――――――――――――――――――

For i = 8 To 38  '为数据源的起始和结束行号,根据区域的多少来定

Range("ActReg").Value = Range("datamap!C" & i).Value

C列的拼音名填入“当前区域”,即K17

    ActiveSheet.Shapes(Range("ActReg").Value).Select

    ’选中“当前区域”对应的图形

Selection.ShapeRange.Fill.ForeColor.RGB =
 Range(Range("ActRegCode").Value).Interior.Color

    ’将选中的图形填充以“当前区域”的颜色代码所指向的单元格的填充样式

Next i

―――――――――――――――――――――――

如代码中的注释所说明,这段宏对每一个区域,将其拼音名填入K17,(这时K18会根据K17的拼音名,查找返回相应的指标值;K19又会根据K18的指标值,查找返回相应的颜色代码),然后宏把颜色代码作为名称所指向的单元格的填充样式复制到当前区域的图形进行填充。

5、点击按钮,当宏循环完成,每个区域的图形就被根据其数值大小,填充了相应的颜色。

我们将I8J12拍照引用到地图左下角,作为图例。为方便复制引用,我们再将地图所在的AO10AT30拍照引用到Q10处,要导出地图时,只需要复制这个拍照对象就可以了。

 


模型的使用

至此,一个层析填色型的热力地图工具就完成了。需要使用的时候,我们只需要3个步骤:

●          填入你的数据;

●          设置分档阀值和填充图例;

●          按下填色按钮,生成热力地图。

是不是非常惬意?呵呵,我们也可以象咨询顾问一样制作数据地图了,穷人的地图可一点也不差哟。


有的朋友可能希望在地图上增加区域名、指标值,可以通过在各省图形上添加文字,或绘制文本框,然后将其链接到相应的单元格。但一般建议不必添加,地图上少放些内容,会显得更加清晰。另外,如需增加分档层级,可根据以上过程,自行修改相应参数来扩展层级。

以上说明仍使用之前日志Excel版中国数据地图工具 》中的例子文件,请至该日志下载参考。

  (本文由ExcelPro的图表博客原创,转载请注明出处。ExcelPro的图表博客探索最专业的商务图表沟通之道,用Excel制作杂志级的商业图表,让普通人士也能极具专业精神。欢迎交流讨论!)



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多