Python讓圖表奔跑起來,Matplotlib的神奇用處

開場白

誠然,在數據為王的時代,數據很值錢。而如何將數據處理的通俗易懂、博人眼球則更加考驗技術人員。

越來越多的公司開始使用Python進行數據處理。其中,對處理過的數據進行圖表生成則變得必不可少。一般來說,生成的圖表都是靜態的。最多也就是通過圖表顏色的變化使其好看一點。但是,如果讓圖表自己動起來,比如說:奔跑起來,是不是立馬可以吸引你的目光呢。

Bar Chart Races (條形圖比賽)最近悄然流行起來。‘條形圖比賽’這種形式最早出現在Matt Navarra的tweet上,瀏覽次數超過1000萬次。隨後,Flourish Studio發佈了Race Chart,一款快速製作條形圖比賽的傻瓜式工具。

那麼,會python的你能不能自己實現‘條形圖比賽’呢?答案自然是:可以。

Python讓圖表奔跑起來,Matplotlib的神奇用處

跟著我一起來完成第一個‘Bar Chart Races’吧!

數據準備

2018年,世界城市人口最多的10大城市有哪些呢?那2017呢?

這次,就一起來做一個世界城市人口最多的10大城市的編年史吧。

使用python處理數據以及繪圖自然少不了Pandas和matplotlib這兩把利器。先導入一些我們會用到的python包。

Python讓圖表奔跑起來,Matplotlib的神奇用處

接下來,導入世界城市人口數據。

Python讓圖表奔跑起來,Matplotlib的神奇用處

總共有6252條數據。通過觀察,我們只需要name、group、year和value這四列數據即可。

Python讓圖表奔跑起來,Matplotlib的神奇用處

通過iloc方法,我們截取前四列數據。1500年,北京的人口67.2萬。

而2018年世界上人口數最多的城市又有哪些呢?

Python讓圖表奔跑起來,Matplotlib的神奇用處

2018年人口最多的城市是東京,3819.4萬。上海和北京分別為2577.8和2267.4萬。數據永遠沒有圖表來的直觀。一起先來做一個2018年城市人口Top10的柱狀圖吧!

Python讓圖表奔跑起來,Matplotlib的神奇用處

當然,光是這樣真的很土。一張好的圖表,一定要色彩鮮明,信息傳達清晰。因此,我們需要對圖表的字體、顏色,座標軸樣式、座標標籤等等進行處理。

圖表美化

Python讓圖表奔跑起來,Matplotlib的神奇用處

通過對整個數據group列的處理,城市來自於六大板塊。那麼,我們可以給六大板塊不同的配色,之後的板塊城市繼承該配色。

Python讓圖表奔跑起來,Matplotlib的神奇用處

同時,我們將城市與對應板塊進行配對。

Python讓圖表奔跑起來,Matplotlib的神奇用處

通過ax.text()函數,我們可以對圖表內每一個柱狀圖城市名、對應板塊名和人口數進行位置上的調整,調整後效果如下。

Python讓圖表奔跑起來,Matplotlib的神奇用處

為了色彩的多樣性,我們將各個板塊的顏色添加進去,並且增加標題和座標軸的變化。

Python讓圖表奔跑起來,Matplotlib的神奇用處

Python讓圖表奔跑起來,Matplotlib的神奇用處

2018城市人口

Bar chart races製作

由於數據是以年為基礎的,我們將上述代碼封裝成函數 bar_chart_race,參數為年-year。

Python讓圖表奔跑起來,Matplotlib的神奇用處

有了函數 bar_chart_race,就可以輕鬆的做出每年的柱狀圖了。

Python的繪圖包matplotlib中自帶了很多動態的變化-matplotlib.animation。其中,FuncAnimation可以通過循環調用繪圖函數進行圖像的更新。下面就是見證奇蹟的時刻了。

Python讓圖表奔跑起來,Matplotlib的神奇用處

將bar_chart_race函數作為參數放入animation.FuncAnimation中,就可以製成從1500年到2018年世界人口Top10城市變化圖了。

總結

Matplotlib是一個很值得認真學習庫。希望你能從這篇文章中學到數據處理以及動態作圖的知識。

下面就欣賞一下我們做的動態圖吧!

代碼如下:animator.save('animation.gif', writer='pillow', fps=60)

Python讓圖表奔跑起來,Matplotlib的神奇用處


分享到:


相關文章: