最近,我看了一篇文章,叫 【Python终于干掉了Excel】,后来发现是个卖python课程的,但不免腹诽:Excel是个被严重低估的工具,虽有许多槽点,但 Excel是我见过最方便的数据可视化工具。
COVID-19全球形式仍不明朗,今天,我们就来看一下,如何使用Excel的3D Maps功能,3分钟制作COVID-19疫情地图。 Excel的3D Maps功能无需编程,即可快速制作各种类型的地图,而且可以根据时间序列生成动画。这里先放效果图:
covid.gif准备
- 软件
- 我们需要 Microsoft Office 2016, 2013版的需要安装Power Map插件
- 如果这个功能找不到或用不了,搜索引擎帮你忙
- 数据
- 最最原始的数据是丁香园的
- 我这里使用的是github上BlankerL/DXY-COVID-19-Data的数据
- 此外,我对上述的数据进行了一定程度的清洗和整理和补充
- 数据在文末有提供下载(数据下载于4/14/2020)
数据结构
在作图之前,我们需要考虑我们的数据需要怎么样的结构,或者简单点,我们需要哪些数据,而这些数据将以什么形式呈现出来(无论做什么图,我们都需要思考这个问题)
以我之前展示的动图为例, 我们至少需要以下三类数据
- 国家/地区的名字
- 疫情数据
- 疫情数据对应的时间
名字 如果我们需要在地图上标注一个国家的疫情,那么,毋庸置疑,我们需要国家的名字,其实有名字你还远远不够,在真正作图的时候,我们使用的不是名字,而是那个国家的国境线(经纬度坐标),把边境线的这些点一个个画出来,就是国家的轮廓了,而万幸的是,3D Maps这个功能能识别不同语言的地名,如 浙江省,Zhejiang,上海 等,他会自动找出这个名字对应的国家,省份,甚至城市,并在地图上画出轮廓线
疫情数据 为了标注疫情的发展态势,我们当然需要疫情数据,可以是确诊数,死亡数,病死率等等。那么,我们需要以怎么样的形式将这个数据呈现在地图上,而在3D Maps中具体操作又是什么?这部分会在具体操作环节详细说明。
时间 如果你只想做静态的图片,时间可以不需要。但如果你需要制作疫情的动态变化地图,我们必须有不同时间,不同地点的疫情数据。动画的原理就是把一张张照片按顺序一张一张播放,我们的大脑由于视觉残留的原理,就会觉得他是连续的。所以我们需要一个时间切片下每个地区的疫情数据,并利用时间这个标签,把他们排列起来。
以下就是一个数据的demo
Name | confirmedCount | time |
---|---|---|
中国 | 1423 | 1/27/2020 |
新加坡 | 4 | 1/27/2020 |
日本 | 3 | 1/27/2020 |
中国 | 2714 | 1/28/2020 |
新加坡 | 5 | 1/28/2020 |
日本 | 7 | 1/28/2020 |
3D Maps作图
下面就是真实数据的截图,共56000多条数据,每条数据包含了一个国家或地区的疫情,数据截止于4月14日,值得注意的是数据的最后一列是我添加的,叫 confirmedCount_log,因为有些国家疫情严重,累计确诊数很高,而大多数国家的确诊数远远低于该值,没有可比性,所以我对confirmedCount这一列作为log2处理,生成新的一列confirmedCount_log,这样数据的差距被缩小,有利于我们可视化。
image.png载入数据
我们首先选中所有数据,最好是用shift 组合键选中有数据的区域,然后单击菜单栏中的Insert - 3D Maps
这时,就会弹出3D Maps 的窗口,我们需要关注右边的设置,如图:
image.png这个侧边栏负责了几乎所有今天需要的操作。他覆盖了以下部分:
- Data
- Filters
- Layer Options
Data
这部分又包含了:
- 数据显示方式
- 位置指定
- 值指定
- 分类指定
- 时间指定
数据显示方式 我们这里选择第5个,不过我也建议大家试试其他的,看看效果。
位置指定 指定数据中,哪一列是你的国家名,这里我们选择国家英文名
值指定 指定我们要可视化的数据,这里是confirmedCount_log,结合刚才选中的数据显示方式,就可以对确诊数不同的国家梯度着色。
分类指定 分类指定可以对不同的分类使用不同的颜色区分,如图,我把continentEnglishName指定为分类,那么3D Maps就会用不同的颜色标注不同的洲。当然这里我们不需要这么做,我们仅依据疫情标注颜色深浅,这里不指定分类,
image.png时间指定 指定时间,为我们的动画做准备。所以我们指定updateTime为时间
Filters
它就是一个过滤器,所有的数据都会先通过这个过滤器再画图,比如,我设置了continentEnglishName,选中非洲和亚洲,如图,就只有这两个洲的国家被着色了。你在这里可以动态地选择大洲,就不需要提前筛选数据再画图,很方便。当然,如果你需要画全球疫情,那这个也不需要设置
Layer Options
这里可以指定颜色,透明度等等,比如这里我们使用红色,他们3D Maps就会按照确诊数建立红色的颜色梯度。
默认情况下,3D Maps展示的是球形地图,为了更好的视野,菜单栏中的Flat Map可能是你需要的
至此,你离成功只差最后的一个播放键!
在进度条的右侧,还有一个设置按钮,你可以指定播放速度,动画效果,限定时间(疫情时间)等
image.png但是,这样生成的地图仅用于个人的数据分析和可视化,不得用于任何官方用途,因为这里的中国地图是不完整的,不被我国承认 解决方案是用Excel读入正确的中国地图的shape文件(.shp),这里就不介绍了。如果使用shp文件,推荐大家使用python或R来操作和作图,比较灵活。
至此,教程结束
PS:新冠肺炎疫情,牵动着我们每个人的心,也切实影响着我们的生活,毫无疑问,我国的疫情防控十分出色,但这不是我们松懈的理由。这几日在黑龙江、广东、山东、辽宁和四川也相继发生了本地传播病例,让我们担心,疫情会不会卷土重来。新加坡近日也单日确诊超过1000例以上,让我们思考,到底如何才能确保安全,防控的漏洞在哪里。看到自己所在城市,大家开心放松的生活和工作,我不由害怕这样的安居乐业再次受到破坏。但无论如何,我们所能做的就是做好自身防护,配合一些必要的检疫措施,团结信任。在希望疫情早日结束的同时,我们也需要做好持久战的准备。
愿
所有人 健康快乐
shawn
2020-04-18
————
微信公众号“肖恩札记”后台回复
COVID
,疫情数据获取
网友评论