返回列表 发帖

关于热力型地图(HeatMap)的制作及简单应用

关于热力型地图(HeatMap)的制作及简单应用

本帖最后由 seaflame 于 2010-10-10 21:24 编辑

一直以来都对某些杂志及网页上的热力型地图(HeatMap,以下简称:HM)羡慕不已(如上图的美国太空总署(NASA)公布的全球PM2.5数值图),亦或有时在接受上级CDC培训时,讲师也经常在讲到某种传染病地区分布时,放出一些精美的HM,很是让人眼热。当时就在想能不能自己制作一个以后放在ppt里或是疫情简报里让想要表达的数剧更加直观。可惜由于找不到基于区县级地图的傻瓜模版,更找不到相关的DIY教程,以上设想很长一段时间都没能实现。直到经过一个比较曲折的学习过程,终于用excel完成了一个煞形,以后再讲到疾病的三间分布,也可以拿出一个像模像样的HeatMap了,希望对大家有所帮助。

注:由于excel的地图模块已剥离单独售卖,在网上搜索数据地图的制作工具,基本没有相关的东西。有一个国产数据地图控件,居然叫价800元,看来是想钱想疯了。毛主席说:自力更生,丰衣足食,自己动手花点时间做个小工具,按数据大小分档层析填色,完成数据地图制作,实在是一劳永逸。

其实HeatMap的制图思路简单归纳起来有两点:


1
、绘制目标地区的地图轮廓。     2、地图模型的构建。

个人觉得地图的绘制是最废时间也是最考验一个人学习耐心的步骤,由于一般在网上都找不到免费的矢量地图(基于区、县一级的矢量图更是别想),这时一般只有自行绘制。鄙人在用鼠标绘制本地区地图时数次差点放弃……由于我区行政区划复杂,又有长江穿过,饶是我耐心再好,中途也几次差点放弃。要不是想到一次完成可以长期使用,也许早就跑去玩了。关于用word或excel绘制地图轮廓,网上教程很多,大家百度一下便知,此次不进行赘述。

至于第二步地图模型的构建,首先,用拼音首字字母为图形命名。如选中德感的自选图形,在Excel左上角的名称框中输入dg,Enter即可,后面会用这个名称来引用这个图形。按此方法逐一完成所有区域图形的命名。(PS:如果某些地区被大江大河划为两部分,则必须在B例的地名中占用两行,数值行用同一数据对应,命名则可加1,2,3...区别,如白沙被长江分为两北两部分,刚可用bs、bs1表示)


接下来,设置数据分档阀值和图例


一般HeatMap用5档进行分档填色,在在I列设置填色样式,J列填入文字标签,在L列设置分档阀值,填入J列标签的下限,M列是为引用准备的名称。 注意在设置分档间距、颜色深浅时,二者应该呈线性比例变化。推荐颜色的的设置方式是使用同一色调的不同饱和度。由于在下主要是用来表示传染病的地区分布,对0值也许会选用特殊醒目的颜色,各位也可以根据自己的需求进行设置。

   

    第三步,为模型定义名称和公式。

      

     RegData=Datamap!$C$8D$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


第四步,制作填色按钮。

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

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

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

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

PS:第四步完成后,请为按钮指定代码,然后手动为每个地图区域手动进行一次填色之后才能在以后实现自动填色(不要问我为什么,我也不知道 )至此,一个属于自己的热力型地图就制作完成了,以后只需更改相关数剧及阀值即可用于不同场合,哈哈,很有成就感吧?基于区、县一级的HM一般来说都是独一份哦。比如下面这幅我区九月传染病报告发病率的HM,发病高低一目了然,领导一看就明白了,不用费时间去看文字(由于办公室没有彩打,故用的黑灰色填充,不喜欢的可以更换颜色)。不过由于纯手工制作,自然不比杂志和网页上那些专业美工的来得漂亮,呵呵。

1

评分人数

不好意思,贴子限制10000字节...只好把结尾放在沙发了....

经过上面的制作,一副完整的HM就完成了,在这基础上,我们还可以制作气泡图等多种变种地图...如果大家有兴趣下次再给大家分解。高手些就不要对我进行批斗了 在大虾眼里都是雕虫小技而已。下面给大家带来一些杂志级的HM,希望大家都能做出自己的风格,方便日后使用:)

   

全球PM2.5空气颗粒污染分布数据地图.jpg (77.11 KB)

全球PM2.5空气颗粒污染分布数据地图.jpg

TOP

这是一篇质量相当高的帖子,因此加了精华,希望作者继续努力,多发些好贴子。
加强基层疾控队伍建设,共创疾控事业辉煌明天!

TOP

不错,支持一下!
有话好好说

TOP

感谢两位版主,呵呵...附件忘上传了,这儿出差一周,回来之后再传吧....如果对此感兴趣的同仁多的话以后再发一些类似的贴子吧...
Tomorrow is another  day

TOP

返回列表