最近,我看了一篇文章,叫 【Python終于干掉了Excel】,后來發(fā)現(xiàn)是個賣python課程的,但不免腹誹:Excel是個被嚴(yán)重低估的工具,雖有許多槽點(diǎn),但 Excel是我見過最方便的數(shù)據(jù)可視化工具。
COVID-19全球形式仍不明朗,今天,我們就來看一下,如何使用Excel的3D Maps功能,3分鐘制作COVID-19疫情地圖。 Excel的3D Maps功能無需編程,即可快速制作各種類型的地圖,而且可以根據(jù)時間序列生成動畫。這里先放效果圖:

準(zhǔn)備
- 軟件
- 我們需要 Microsoft Office 2016, 2013版的需要安裝Power Map插件
- 如果這個功能找不到或用不了,搜索引擎幫你忙
- 數(shù)據(jù)
- 最最原始的數(shù)據(jù)是丁香園的
- 我這里使用的是github上BlankerL/DXY-COVID-19-Data的數(shù)據(jù)
- 此外,我對上述的數(shù)據(jù)進(jìn)行了一定程度的清洗和整理和補(bǔ)充
- 數(shù)據(jù)在文末有提供下載(數(shù)據(jù)下載于4/14/2020)
數(shù)據(jù)結(jié)構(gòu)
在作圖之前,我們需要考慮我們的數(shù)據(jù)需要怎么樣的結(jié)構(gòu),或者簡單點(diǎn),我們需要哪些數(shù)據(jù),而這些數(shù)據(jù)將以什么形式呈現(xiàn)出來(無論做什么圖,我們都需要思考這個問題)
以我之前展示的動圖為例, 我們至少需要以下三類數(shù)據(jù)
- 國家/地區(qū)的名字
- 疫情數(shù)據(jù)
- 疫情數(shù)據(jù)對應(yīng)的時間
名字 如果我們需要在地圖上標(biāo)注一個國家的疫情,那么,毋庸置疑,我們需要國家的名字,其實(shí)有名字你還遠(yuǎn)遠(yuǎn)不夠,在真正作圖的時候,我們使用的不是名字,而是那個國家的國境線(經(jīng)緯度坐標(biāo)),把邊境線的這些點(diǎn)一個個畫出來,就是國家的輪廓了,而萬幸的是,3D Maps這個功能能識別不同語言的地名,如 浙江省,Zhejiang,上海 等,他會自動找出這個名字對應(yīng)的國家,省份,甚至城市,并在地圖上畫出輪廓線
疫情數(shù)據(jù) 為了標(biāo)注疫情的發(fā)展態(tài)勢,我們當(dāng)然需要疫情數(shù)據(jù),可以是確診數(shù),死亡數(shù),病死率等等。那么,我們需要以怎么樣的形式將這個數(shù)據(jù)呈現(xiàn)在地圖上,而在3D Maps中具體操作又是什么?這部分會在具體操作環(huán)節(jié)詳細(xì)說明。
時間 如果你只想做靜態(tài)的圖片,時間可以不需要。但如果你需要制作疫情的動態(tài)變化地圖,我們必須有不同時間,不同地點(diǎn)的疫情數(shù)據(jù)。動畫的原理就是把一張張照片按順序一張一張播放,我們的大腦由于視覺殘留的原理,就會覺得他是連續(xù)的。所以我們需要一個時間切片下每個地區(qū)的疫情數(shù)據(jù),并利用時間這個標(biāo)簽,把他們排列起來。
以下就是一個數(shù)據(jù)的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作圖
下面就是真實(shí)數(shù)據(jù)的截圖,共56000多條數(shù)據(jù),每條數(shù)據(jù)包含了一個國家或地區(qū)的疫情,數(shù)據(jù)截止于4月14日,值得注意的是數(shù)據(jù)的最后一列是我添加的,叫 confirmedCount_log,因?yàn)橛行﹪乙咔閲?yán)重,累計(jì)確診數(shù)很高,而大多數(shù)國家的確診數(shù)遠(yuǎn)遠(yuǎn)低于該值,沒有可比性,所以我對confirmedCount這一列作為log2處理,生成新的一列confirmedCount_log,這樣數(shù)據(jù)的差距被縮小,有利于我們可視化。

載入數(shù)據(jù)
我們首先選中所有數(shù)據(jù),最好是用shift 組合鍵選中有數(shù)據(jù)的區(qū)域,然后單擊菜單欄中的Insert - 3D Maps
這時,就會彈出3D Maps 的窗口,我們需要關(guān)注右邊的設(shè)置,如圖:

這個側(cè)邊欄負(fù)責(zé)了幾乎所有今天需要的操作。他覆蓋了以下部分:
- Data
- Filters
- Layer Options
Data
這部分又包含了:
- 數(shù)據(jù)顯示方式
- 位置指定
- 值指定
- 分類指定
- 時間指定
數(shù)據(jù)顯示方式 我們這里選擇第5個,不過我也建議大家試試其他的,看看效果。
位置指定 指定數(shù)據(jù)中,哪一列是你的國家名,這里我們選擇國家英文名
值指定 指定我們要可視化的數(shù)據(jù),這里是confirmedCount_log,結(jié)合剛才選中的數(shù)據(jù)顯示方式,就可以對確診數(shù)不同的國家梯度著色。
分類指定 分類指定可以對不同的分類使用不同的顏色區(qū)分,如圖,我把continentEnglishName指定為分類,那么3D Maps就會用不同的顏色標(biāo)注不同的洲。當(dāng)然這里我們不需要這么做,我們僅依據(jù)疫情標(biāo)注顏色深淺,這里不指定分類,

時間指定 指定時間,為我們的動畫做準(zhǔn)備。所以我們指定updateTime為時間
Filters
它就是一個過濾器,所有的數(shù)據(jù)都會先通過這個過濾器再畫圖,比如,我設(shè)置了continentEnglishName,選中非洲和亞洲,如圖,就只有這兩個洲的國家被著色了。你在這里可以動態(tài)地選擇大洲,就不需要提前篩選數(shù)據(jù)再畫圖,很方便。當(dāng)然,如果你需要畫全球疫情,那這個也不需要設(shè)置

Layer Options
這里可以指定顏色,透明度等等,比如這里我們使用紅色,他們3D Maps就會按照確診數(shù)建立紅色的顏色梯度。

默認(rèn)情況下,3D Maps展示的是球形地圖,為了更好的視野,菜單欄中的Flat Map可能是你需要的
至此,你離成功只差最后的一個播放鍵!
在進(jìn)度條的右側(cè),還有一個設(shè)置按鈕,你可以指定播放速度,動畫效果,限定時間(疫情時間)等

但是,這樣生成的地圖僅用于個人的數(shù)據(jù)分析和可視化,不得用于任何官方用途,因?yàn)檫@里的中國地圖是不完整的,不被我國承認(rèn) 解決方案是用Excel讀入正確的中國地圖的shape文件(.shp),這里就不介紹了。如果使用shp文件,推薦大家使用python或R來操作和作圖,比較靈活。
至此,教程結(jié)束
PS:新冠肺炎疫情,牽動著我們每個人的心,也切實(shí)影響著我們的生活,毫無疑問,我國的疫情防控十分出色,但這不是我們松懈的理由。這幾日在黑龍江、廣東、山東、遼寧和四川也相繼發(fā)生了本地傳播病例,讓我們擔(dān)心,疫情會不會卷土重來。新加坡近日也單日確診超過1000例以上,讓我們思考,到底如何才能確保安全,防控的漏洞在哪里??吹阶约核诔鞘?,大家開心放松的生活和工作,我不由害怕這樣的安居樂業(yè)再次受到破壞。但無論如何,我們所能做的就是做好自身防護(hù),配合一些必要的檢疫措施,團(tuán)結(jié)信任。在希望疫情早日結(jié)束的同時,我們也需要做好持久戰(zhàn)的準(zhǔn)備。
愿
所有人 健康快樂
shawn
2020-04-18
————
微信公眾號“肖恩札記”后臺回復(fù)
COVID,疫情數(shù)據(jù)獲取