我用Excel做了一個美國颶風的動效軌跡圖!

2017年,美國“艾爾瑪”颶風肆虐,據說特朗普的別墅都被吹爛了!暫且不論此次颶風的威力和損失,相關颶風的資訊其實都可以通過Hurricane & Tropical Cyclone Details網站查到。

正逢最近癡迷於研究excel的動效,聯想到大大方驥以前做的一個颶風圖,依葫蘆畫瓢做了一個,利用氣泡動效圖來描繪颶風的路綫,展現強度變化。

操作步驟

1、素材準備

① 一張帶經緯線的美國·大西洋地圖。因為公共服務提供的經緯度並不精確,各大地圖工具都不帶經緯度。當初翻遍了網路,在德克薩斯大學的地圖圖書館NHC Blank Tracking Charts,找到了這張地圖。

②從Hurricane & Tropical Cyclone Details上下載Irma颶風的移動路綫資料,包括日期時間、經緯度、風力等。

2、處理資料

經緯度、風速、風壓等去單位。

日期和時間要稍作處理轉換成Excel便於處理的日期資料。

時間間隔前期基本上都是每6小時的記錄一次資料,後期每3小時甚至每小時就記錄一次,這裡為了便於後期好處理,統一留下每6小時的資料。

3、繪製氣泡圖

將上面的地圖插入到表格中,然後在上面繪製一張氣泡圖,氣泡圖的X軸資料就是經度資料,Y軸資料就是緯度資料,氣泡大小取自風力大小的數值。

設置繪圖區格式,根據經緯度座標的讀數來設置氣泡圖中坐標軸的最大值和最小值,並且使座標間隔和地圖上的經緯度間隔一致,比如這裡間隔是5,這樣可以保證氣泡圖繪製的資料點與地圖中實際的經緯度相匹配。

拖拽移動圖表繪圖區的邊框,使它與底層大西洋地圖中的坐標軸線相互重合。然後隱去軸資料,邊框什麼的都設置“無”。

4、製作動效

【思路】

要想實現軌跡的動效,這裡可以使用滑動條控制項來控制時間,每滑動一次,時間就增加6小時。

滑動條所連結的儲存格把資料傳遞給圖表左側的表格區域中,然後通過對時間點的查詢得到相應的經緯度數據和風力風壓資料。同時再由這個時間資料生成圖表的兩組資料來源,由此構造形成整個控制鏈,並完成滑動條對圖表的最終控制。

進一步,我想實現滑動條的自動控制,這裡則需要通過VBA代碼來實現,讓圖表自動播放。

【操作】

1、用VBA寫兩個宏,一個控制啟動,一個控制停止。

2、繪製4個控制項,分別代表啟動、停止、迴圈、滑動條,指定上述宏。

3、滑動條控制項格式指定左側儲存格,左側儲存格會記錄滑動資料,上方data & time調用此儲存格資料。

4、準備動態資料

為實現以上動態效果,其實在氣泡圖中準備了兩組數據。一組顯示當前時間點之前颶風所走過的所有路徑點,另一組則標記當前時間點颶風所在位置。

這裡需要用到LOOKUP函數,並調用data & time儲存格資料。

第一組資料選取小於等於當前時間點的所有資料,並將其他資料點設為#N/A。

=IF($A9<=LOOKUP(map!$C$3,$A$2:$A$55),data!D9,NA())

第二組選取與當前時間相匹配的資料,其他資料也設為#N/A。這裡,#N/A不會在圖表中顯示資料點。

=IF(A9=LOOKUP(map!$C$3,$A$2:$A$55),data!D9,NA())

5、氣泡圖綁定資料來源

至此,就都搞定了,圖表中的文字方塊則可以通過連結儲存格,直接從儲存格當中獲取資料點的資訊。

此外,這裡除了氣泡圖,圖表中還添加了一組直條圖來展示風力,資料綁定的操作形式和上面氣泡圖如出一轍。

關於圖中動效卡頓,我估計是來源資料有點問題,比如2017/9/7 15:00經緯度是20.4/69.7,下個時刻2017/9/7 21:00經緯度就成18.8/65.4,往回倒了,還是颶風自己會打轉或往回走一段?

總體思路就是這樣,這裡就不再對資料處理了。

附上官方圖,是不是差不多了。

小編有大招,推薦給你們:學習計劃|帶你10周入門資料分析

我是「數據分析那些事」。常年分享關於資料分析優質文章,不定期分享好用的職場技能工具。

各位粉絲寶寶也可以關注我的Facebook,期待你與我互動起來~

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store