返回列表 发帖

关于热力型地图(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

评分人数

EPIMAP软件也可以实现热力型地图

TOP

受益匪浅,就是到第三步就不明白了,能否将excel原文件传上来,多谢!!!

TOP


43.jpg

TOP

TOP

返回列表