
可視化冠狀病毒 COVID-19 全球病例
使用時間序列動畫氣泡圖
我在這裡收集了資源來幫助您進行可視化。 觀看 2020 年 3 月 26 日在線網絡研討會的視頻,閱讀我選擇這些分析的原因,訪問數據或JMP 實時報告,試試我附加的腳本,和/或使用數據嘗試做你自己的分析。
在傳達有關冠狀病毒 COVID-19 傳播數據的持續努力中,有很多更新。 我在最新版本中包含了一些查看全局摘要和本地摘要的圖形生成器圖。 氣泡圖還增加了顏色以表示計數的日常變化。 有一個選項卡框可以在圖形中的對數和線性刻度之間切換,在局部計數圖中,線性刻度圖具有一個分裂軸圖,可以同時顯示較低和較高計數區域。
在此處查看 HTML 版本JMP 實時頁面。
前言:
- 冠狀病毒及其傳播引起的所有問題都很嚴重,影響了很多人,其中一些人的影響非常可怕。 我無意通過創造這個數字來貶低這件事的嚴重性。 我的目標也不是促進歇斯底里或仇外心理。
- 在我的腳本中,我重新編碼了原作者使用的位置名稱。 我沒有政治議程。 當我使用谷歌地圖 API 進行地理編碼時,我需要它為我提供國家/地區位置。 Taiwan, Taiwan 會導致餐廳位置,而 Taiwan, China 會導致台灣中心附近的地理編碼。 同樣,這不是政治性的,而是功能性的。
- 圍繞冠狀病毒報告和檢測的所有數據都存在巨大爭議。 我不保證這些數據的準確性;然而,這是我所知道的公開可用數據(英文)的最佳集合。 如果你有更好的東西,請告訴我。
- 這不是我的數據。 約翰霍普金斯大學懷廷工程學院系統科學與工程中心的人們發布了一個漂亮的儀表板以及數據。 非常感謝這個團隊提供他們的數據。閱讀他們的博客一定要看看他們的可視化。
他們還設立了一個包含原始數據的 GitHub 頁面以易於訪問的格式。 (榮譽 x 10^6)。
為什麼在時間序列動畫中使用氣泡圖?
氣泡圖具有很高的實用性,因為可以在單個圖中表示大量維度。 通過添加時間序列動畫,這些維度之間關係的變化可以被可視化和傳達,而無需觀眾進行大量複雜的預先註意處理。 (又名:它們看起來很酷而且很容易理解)
請注意,我說過氣泡圖對於查看多種的隨時間動畫的尺寸,而不僅僅是一隨時間變化的尺寸(變量)動畫。 我見過人們製作一個類似運行/控製圖的圖,在 X 軸上有一個維度,在 Y 軸上有時間,然後按時間製作動畫。 這稱為繁瑣的運行/控製圖,請不要這樣做。
對於我要在這裡構建的圖形。 X 和 Y 軸採用測地線比例,因此這些點將與地圖對齊。 我們可以看到圖形上點的空間關係,這些點由背景地圖形狀賦予上下文。 接下來,我為標記添加了一個大小維度,這是每個位置按時間段的累計病例數。 最後,我使用時間段序列來製作動畫,這會導致氣泡隨著時間的推移而增長或出現。 每個點都標有國家和地區。 在此圖中,可以將所有單獨的點折疊到它們的國家 ID 中,或者將它們拆分到國家 ID 中的區域 ID 中。
生成圖形的腳本正在追逐移動目標。 數據的作者不斷進行更改,因此如果源數據發生更改,這可能只適用幾天。 截至 2/12/2020 上午,它有效。 腳本末尾有一個用於在 JMP Live 中發布或刷新圖形的選項。 這對你不起作用,因為你沒有我的絕密 API 密鑰來訪問 JMP Live 中的包。 如果您有 JMP Live,它可能有助於作為發布和刷新如何工作的示例。
腳本如何工作。
- 設置我稍後在腳本中需要的所有變量
- 下載數據並格式化
- 這部分有一些奇怪的東西。 在幾個點上,我將數據保存在本地,關閉表格然後重新打開它。 我在強制腳本按順序運行時遇到了麻煩,這是實現它的一種方法。 有時,在下一步開始之前,一個表還沒有完成更新,我得到了不穩定的表。這種蠻力的方法很符合我的性格和作風。
- 生成氣泡圖
- 弄清楚是否需要發布或刷新,然後發布或刷新圖形
在查看腳本時,您可能會注意到我用表達式包裹了部分。 當它與代碼折疊選項(檢查腳本編輯器的首選項)結合使用時,這是一種整理長腳本的便捷方法。
20 年 3 月 26 日更新
本週早些時候,我使用的數據集已被棄用。 今天早上,已棄用的數據已移至另一個位置。 不用說這個項目確實是一個移動的目標! Johns Hopkins CSSE 有另一個數據 GitHub 存儲庫,每天更新數據。 下面的新腳本“編譯 COVID-19 時間序列數據”將檢查存儲庫中有哪些文件,然後下載並組裝它們。 這個數據集有一些有趣的“特徵”。 我使用重新編碼來解決其中的許多問題,並使用一些創造性的公式來解決其餘問題。
一些問題和解決方案
- 每個站點的位置不一致,所以我使用了最新的位置並在其他地方替換了它。
-累計計數應該增加或保持不變。 當累計計數減少時,使用前一天的值。 這可以防止從累積計數中得出的每日計數中出現負數。
- 表中的列名稱隨著時間的推移不一致。 標籤統一為 3/24/20 表列名。
- 某些位置名稱中存在一些拼寫錯誤和尾隨/前導空格。 重新編碼解決了這些問題。
- 位置按每個位置的確認計數總和按價值排序和顏色排序。
- 決賽桌不包含任何公式。 可以在不影響排序相關計算的情況下對錶進行排序。
20 年 4 月 3 日更新
我今天更新了腳本。 請注意,它需要大約一分鐘或更長時間才能運行。 清理腳本中發生了很多事情,一些公式需要一點時間才能完成。
此版本在末尾包含一個部分,該部分刪除了重複的行以及其他一些調整
用於製作累積計數與按天計數氣泡圖的新列公式。 這些是位置列的移動平均值,而不是 5 或 7 天的平均值。 移動平均線給了我更多的工作點。
為圖表提供信息的有用文章:
•關於在時間序列中繪製什麼的註釋,尤其是氣泡圖。 請注意,累積計數會使氣泡不斷增加,但按天計數會顯示熱點。(喬爾·塞拉尼基奧)
• https://www.futurehealth.live/blog/2020/2/17/all-the-coronavirus-maps-are-wrong
• https://www.futurehealth.live/blog/2020/2/10/coronavirus-dataviz-sucks
•使用地圖和地圖形狀的注意事項。 (肯尼斯菲爾德)
• https://www.esri.com/arcgis-blog/products/product/mapping/mapping-coronavirus-responsibly/
•關於滯後指標和不同軸標度數據的說明。 (馮凱撒)
• https://junkcharts.typepad.com/numbersruleyourworld/2020/03/how-to-act-like-a-data-scientist-8-dont-use-lagging-indicators-to-forecast.html
@凱文B舊的拆分軸技巧。 將您的變量放在 x 軸上,然後再將它放在第一個變量的右側或左側。 簡單吧?但很難理清,因為頭腦正常的人會把同一個變量放在同一個軸上兩次。 一個軸獲得範圍的低端,另一個獲得範圍的高端。
例如,左側為 0 至 60 分鐘,右側為 1-24 小時。 然後,如果你想變得瘋狂,在第三個 x 軸上的第 2 天到第 10 天。
@bfoulkes老實說,這就是我所能想到的,所以我很高興看到你能用它做什麼。 也許是時候舉辦活動了?或受影響地區在高增長和高原之間的時間......
這個腳本非常棒,可以跟踪進度並跟上受影響的區域。感謝您向我們展示如何做到這一點。
這個項目有點像在追逐一個移動的目標。 數據的作者不斷移動它。
我更新了劇本(是的,在情人節那天,但在我等待怪物烤寬麵條完成烘烤的時候。)
現在數據拉取更簡單了,每個類別都在自己的選項卡框中,而不是數據篩選框。
還有一個點的問題沒有出現在氣泡圖上,這也已修復。
提供一個有用(而且很酷)的腳本來跟上這場全球公共衛生悲劇的真正有趣和好方法,拜倫@Byron_JMP .它非常有用,以至於 JMP 可以處理時間序列數據。
我打算將代碼複製到 .jsl 文件中,但注意到涉及一些自定義。例如,您指向您的 JMP Live 賬戶。你能更新腳本,讓它更通用一點嗎?並且,感謝您鏈接到包含原始數據的 GitHub 頁面這樣我就可以嘗試自己在 JMP 中查看新數據。