閱讀225 返回首頁    go 技術社區[雲棲]


獨家 | 6步教你用R語言製作動圖

引言

 

數據可視化可能是數據科學領域最重要卻通常最少被提及的部分。

 

我這麼說是因為創造數據故事和可視化對你的顧客最終怎麼看待你的工作有巨大的影響。數據科學不僅僅是說你的模型如何複雜或精細,它是使用基於數據的洞察力來解決問題(的範疇)。並且,為了實施這些解決方案,你的領導們需要了解你的計劃


在創造有影響力的可視化進程中,挑戰之一便是創造能夠自己講話的圖像。這篇文章將會告知一種方式來幫你創作可使用的生動的GIF圖像(即圖表可交互化格式)。當你想要顯示基於時間或者基於循環的故事時,這種方式將對你非常有幫助。在圖片中采用動畫的形式,你可以為特定組合的參數的畫出隨時間流動的可比的數據。換言之,理解並且看到某些參數隨時間(的演進)而發生的改變。


請允許我用一個例子展示給你:

 

例子:GDP與預期壽命相比較

 

假如說你想去展示不同的洲/國家的GDP和預期壽命是怎樣隨時間的改變而改變的。你認為什麼是最好的方式來展現這種關係呢?

你可以考慮多種選擇,比如說:


  • 創造一個和GDP、預期壽命以及時間相關的3D製圖,為每個洲或國家畫出線條。問題是:人類闡釋以2D形式畫出3D圖像的能力是非常的薄弱的,尤其是當存在太多數據時。因此,這個選擇不奏效。


  • 一並創造2個圖表:一個展示隨時間而改變的GDP,另一個則顯示隨時間而變的預期壽命。這是一個二維製圖。我們為讀者留下了很多空間去詮釋。讀者需要選定一個國家並且看這個國家在每一個節點上的變化,然後把他們串聯起來。最後再次循環。


現在,讓我們看這個生動的動圖文件吧。


0?wx_fmt=gif&wxfrom=5&wx_lazy=1


Gganimate包的發展使得這問題更加容易實現。在這篇文章的最後,你可以製作屬於自己的動圖文件並且創造自己的定製框架以在全球或當地範圍內比對不同的參數。

 

首要事宜


請先安裝以下包:


  • ggmap

  • gganimate

  • dplyr

  • animation


此外,除了以上R庫,你也需要自己的係統中有Image Magick軟件。你可以下載並安裝這個軟件(https://www.imagemagick.org/download/binaries/ImageMagick-7.0.4-7-Q16-x64-static.exe)

 

獲取數據


這篇文章試圖用1965到2016年的地震數據來製作動圖文件。最好是在地圖上按年份順序繪製全球地表活動而非靜態呈現所有的數值。地震的數據集在Kaggle上是開放的(https://www.kaggle.com/usgs/earthquake-database)。數據集包括1965年至2016年地球地震活動的數據。請訪問以上鏈接並且向下滾動以得到csv的文件夾。

 

從1965到2016年的發生過的裏氏震級為7.0的大地震:這個數據集已經被改良過,隻有裏氏震級為7級的數據才被用於研究。

 

數據處理


為了簡化流程,從csv文件夾裏我們隻挑選了很少幾個變量:


  • 日期Date)

  • 時間(Time)

  • 經度(Latitude)

  • 緯度(Longitude)

  • 類型(Type,即地震活動的類型)

  • 寬度(Depth,即從地麵閉合處到震源中心的距離)

  • ID(ID,即地震活動的事件標識)

  • 震級(Magnitude,即裏氏震級的讀數)


我們都準備開始用R語言譯碼,使用過R工作室的環境。你可以自由地使用你偏愛的任何環境。

 

R語言代碼

 

640?wx_fmt=png&wxfrom=5&wx_lazy=1


把日期分割到年、月和天


我們要做這件事情是因為我們要得到對繪圖非常重要的。換言之,這個方法的核心就是將框架(frame)當成另一維度,就像x,y軸,尺寸,顏色,等等。因此,你的數據中的一個變量可以被投射到框架中,這個過程就像其他變量被投射到X或者y。


640?wx_fmt=png&wxfrom=5&wx_lazy=1

640?wx_fmt=png&wxfrom=5&wx_lazy=1


0?wx_fmt=gif&wxfrom=5&wx_lazy=1


使用animation包來加速gif圖片中的投影

 

正如我們看到的那樣:這個動圖包含1965年到2016年多年的圖片。因此,為了加速可視化的呈現,我們可以用Animation包中的ani.option()來加速。


640?wx_fmt=png&wxfrom=5&wx_lazy=1




結論


這篇文章是對動圖世界的一個入門教程。讀者可以在其他的項目裏嚐試和應用同樣的方法。一些例子如下:


  • 相同的技術可以被用於比較不同國家的天氣數據的熱力地圖。

  • 一段時期內某個特定地點洪水或其他自然災害。

  • 可以利用德羅內三角板來見證城市地鐵的增長。可以看Page Piccinini在r-Bloggers所發布的有趣的文章《隨時間變化的地鐵係統》(https://pagepiccinini.com/2016/09/27/metro-systems-over-time/)或者你可以直接從她的官網(https://pagepiccinini.com/2016/09/27/metro-systems-over-time/)訪問她的頁麵。


希望你覺得這篇文章有用。如果你有任何問題,歡迎在以下的評論區詢問。


原文發布時間為:2017-08-28

本文作者:GUEST BLOG

本文來自雲棲社區合作夥伴“數據派THU”,了解相關信息可以關注“數據派THU”微信公眾號

最後更新:2017-10-10 16:03:35

  上一篇:go  數據蔣堂 | 從SQL語法看離散性
  下一篇:go  10.11杭州Clouder lab 十分鍾搭建共享應用1:函數計算及表格存儲操作說明