用Qlik Sense製作疫情互動數據圖
相信大家都看過John Hopkins Hospital製作的COVID-19數據圖表,網站除了提供資訊圖外,還將已整理好的原始數據上傳至github給公眾參考。自己在工作上有使用Qlik Sense製作資訊圖,就無聊地(?)拿csse_covid_19_time_series的數據來試用一下,順便磨練一下Qlik Sense的技巧。結果不下場還好,一到實戰時還是遇上不少問題,最後還是要GOOGLE一輪才解決問題,但這也是有所得著的過程。以下分享一下內容,留言有提供原始的Qlik Sense App下載(需配合Qlik Sense Cloud使用,可申請一個月免費試用帳戶),歡迎使用及改動(會有人用嗎?),也歡迎交流一下。
以下所有數據更新至2020年3月11日。另圖表僅供參考,我雖有盡力檢查但不保證圖表正確。(XP)有問題或bug可以留言,我時間及能力許可下盡量跟進。
版面簡介︰App內包括了Overview、Countries/Regions、Mainland China和Data四版,分別展示全球一覽圖、各國數據圖、中國大陸數據圖和原始數據表。
以下截取了一些圖表給大家參考。
Existing case是指當下患病人數,計算方法是:確診案例 - 死亡案例 - 已康復案例。
Case fatality rate是:累計死亡人數 / 累計確診人數。
以下是一些關於國家的數據圖表。
以下是一些中國大陸的數據圖表。
製作感想
- 雖然平日已有製作Dashboard的經驗,但是增作這些以天為時間單位的圖表還是第一次(平日製作的都是以年為單位),所以要摸索關於日期的變換及處理,其中學到了Above()及Below()這個比較上/下一列數據的function,初時以為可以用來計算每日案例數目的變動,不過考慮到若果用家點選了個別日期後該function便可能失效,所以最終沒有使用,後來找到了peek這個loading function用來撈取早前的數據並徹底解決了問題。
- 另一個難題是如何自動地更新數據。平日的數據因為是以年為單位所以人手更新便可(一年做一次),但這次疫情資訊是每天更新,便開始研究如何設定自動的數據更新,詳細方法文末有分享。
- John Hopkins提供的數據不時改動國家/地區的名稱,例如本來一直分開列出的香港和澳門最近被合併入中國內,台灣又煞有介事地標為"Taiwan *",South Korea又不知為何改為"Korea, South",政治雕琢的痕跡顯而易見,而這亦令App內的數據線不時斷掉,於是我又要花費心神做data cleansing...
- 每次製作這些Dashboard時心裏總有「想放的東西太多但版面太小」的感覺,雖然Qlik Sense有提供Tab container算是舒緩了版面不足的問題,但現時仍是覺得版面很擠擁,如何平衡資訊性及可讀性總是成為最難處理的問題。
檔案下載
請參看留言,歡迎使用及改動。(重申一次︰我雖有盡力檢查但不保證圖表正確。)
使用方法
下載檔案後請到Qlik Sense Cloud申請試用帳戶(免費使用一個月),登入後上傳檔案,成功後便會看到新增了一個「App」(明顯地為了扮「潮」所以用這個字),點擊後便可進入使用。
註︰建議使用電腦開啟檔案,而且解析度不要太低(如1200x900以上)
如果發現數據未能更新,可以按左上角的"Clear all"清除選項,又或重新載入App應可解決問題。
如何更新數據
本來Qlik Sense是支援直接讀取網頁數據的(至少我工作用的版本便可以),這樣我便可以直接匯入github的csv檔,但來到試用版後便發現沒有了閱讀網頁的功能,我亦不太熟習github的功能,結果我只好用Wget + Windows Scheduler定期地從github上抓取三個相關的csv檔落電腦,然後再用Dropbox之類的Cloud Storage同步上傳,並設定Qlik Sense讀取這些雲上的csv檔。如果各位高手有更佳的方法請分享。
如果你不介意手動更新數據,那只要在Google Drive或Dropbox上開啟一個"Coronavirus 2019"資料夾(這很重要,不然便要改動loading script),然後放入這三個github csv檔,之後打開Qlik Sense App,開啟Data load editor︰
當看到長長的programming script後可以直接跳過(笑),點選最右邊的"Create new connection":
這時Browser會開啟新tab進入Dropbox / Google Drive的畫面(如果你未登入便需要先登入),要求你准許Qlik Sense讀取Dropbox / Google Drive的資料:
之後返回Qlik Sense的Data loading editor畫面,貼上已複製的字串,然後按"Verify",成功的話會看到底下的"Name"顯示Dropbox / Google Drive 的戶口名,這時務必將名字改為"Data source"(不改的話便又要改loading script了),請留意大小寫必須完全一致,完成後可以按"Test connection"試一下,如果成功便按"Create"。
以上步驟只要設定一次便可,之後按右上角的Load data便會讀取更新的數據。
日後更新時只需要登入Qlik Sense,按App右下角的"...",然後選擇Reload。若果你有設定自動更新Dropbox / Google Drive的csv檔案,也可以設定"Schedule reload"定期更新Qlik Sense App。