用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。
Like my work? Don't forget to support and clap, let me know that you are with me on the road of creation. Keep this enthusiasm together!
- Author
- More