Pycon 2017: Python可視化庫大全

前言

本文主要摘錄自 pycon 2017大會的一個演講,同時結合自己的一些理解。

pycon 2017的相關演講主題是「The Python Visualization Landscape」。

先來一張全景圖鎮樓~~

看完這張圖是不是有點懵?

別著急,我們一起來看看後面的闡述。

python可視化庫可以大致分為幾類:

  • 基於matplotlib的可視化庫

  • 基於JS的可視化庫

  • 基於上述兩者或其他組合功能的庫

基於matplotlib的可視化庫

matplotlib是python可視化庫的基礎。matplotlib庫的設計參考了matlab,甚至連名稱也是以「mat」開頭。

matplotlib庫的一些優勢:(翻譯比較彆扭,英文原文也附後)

  • 設計很像Matlab,容易進行轉換(Designed like Matlab: switching was easy)

  • 有很多渲染後端(Many rendering backends)

  • 差不多可以繪製任何圖(當然需要花費些努力)(Can reproduce just about any plot with a bit of effort)

  • 有長時間良好運行的歷史 (Well-tested, standard tool for over a decade)

matplotlib庫的一些缺點:

  • 必須要掌握API,且描述較為冗長(API is imperative & often overly berbose)

  • 有時候默認的樣式設計比較弱(Sometimes poor stylistic defaults)

  • 對網頁以及互動式繪圖的支持較弱(Poor support for web/interactive graphs)

  • 數據量大時經常運行較慢(Often slow for large & complicated data)

Matplotlib自2003年發布以來,使用情況還是呈現了良好的趨勢:

Matplotlib部分繪圖實例如下:

關於matplotlib,微信公眾號之前寫過一篇關於餅圖的介紹,有興趣的可閱覽下。

關於matplotlib,你要的餅圖在這裡

也因此,後續開發者都吸取了matplotlib庫的優點,經過對matplotlib庫的缺點進行改進,從而衍生出一系列的可視化庫。

基於matplotlib的庫概覽如下:

下面介紹兩個重要的基於matplotlib的第三方庫:pandas以及seaborn

Pandas

可能我們平時使用pandas時更多的是用來進行數據分析和處理,其實pandas也提供了較為簡單的API來進行圖形繪製。

我個人一般是用pandas來處理數據,然後結合其他可視化庫(如matplotlib,seaborn,bokeh等)來繪圖圖形。

Pandas部分繪圖實例如下:

微信公眾號中部分文章的案例可供參考。

用Pandas獲取商品期貨價格並可視化

python求職Top10城市,來看看是否有你所在的城市

seaborn

Seaborn是基於matplotlib的Python可視化庫。它提供了一個高級別介面用於圖形繪製。

Seaborn在matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,在大多數情況下使用seaborn就能做出很具有吸引力的圖。

關於Searbon,微信公眾號之前寫過一篇關於熱力圖的介紹文章,有興趣的可閱覽下。

Python可視化:Seaborn庫熱力圖使用進階

Seaborn部分繪圖實例如下:

詳細信息可在其官方網站查閱:

Seaborn: statistical data visualization

基於JavaScript的可視化庫

兩個受歡迎度較高的可視化庫 bokehplotly

bokeh

Bokeh (Bokeh.js) 是一個 Python 互動式可視化庫,支持現代化Web瀏覽器,提供非常完美的展示功能。Bokeh 的目標是使用 D3.js樣式提供優雅,簡潔新穎的圖形化風格,同時提供大型數據集的高性能交互功能。Boken 可以快速的創建互動式的繪圖,儀錶盤和數據應用。

關於bokeh,微信公眾號之前寫過的文章用應用過timeseries圖,有興趣的可閱覽下。

用Pandas獲取商品期貨價格並可視化

bokeh部分繪圖實例如下:

詳細信息可在其官方網站查閱:

Welcome to Bokeh

plotly

Plotly是另一個免費進行數據分析和繪製圖表的APP,建立在d3.js上。 Plotly圖可下載為SVG,EPS或PNG格式,並簡單地導入到Illustrator或者Photoshop中。

跟bokeh類似,也可以製作一些互動式的web圖。

plotly部分繪圖實例如下:

詳細內容可以去官網參考:

plotly

其他綜合類型庫

Holoviews

Holoviews能夠讓用戶構建有助於可視化的數據結構,而且它包含豐富的可組合元素庫,可以覆蓋、嵌套和輕鬆定位。同時,它還支持快速數據探索。

Holoviews可以和Seaborn、pandas或者bokeh組合使用。

由於筆者還沒具體了解過Holoviews的使用功能,這裡將英文的描述直接放在下面,以免個人理解不準確而產生誤導。

關於Holoviews的效果圖,可參考下面動態圖,建議觀看原視頻,效果會好點。

Altair

Altairs起源於D3,但代碼編寫量要比D3簡單。這裡有兩幅對比的圖如下:

  • 用D3繪製的柱狀圖

  • 用Altairs繪製的柱狀圖

Altair 是 Python 高級聲明式可視化庫。Altair 提供一個 Python API 在聲明式 manner 中構建靜態統計可視化庫。

什麼是聲明式可視化庫呢,不管是翻譯成中文的名稱還是看英文的名稱,我都一臉懵圈。幸好,有英文的進一步描述,如下:

總的來說,Altairs讓開發者們更專註於數據及他們之間的關係,而不是一些不重要的細節。

最後,再放上這張Python可視化的全景圖,對於個人而言,不一定能全部熟悉使用,但是能熟練用好其中的一部分,實際應用於工作及項目中,也就OK了。

關於視頻

pycon 2017的相關演講主題的視頻在youtube上可觀看,由於牆的緣故,部分童鞋可能不能觀看視頻。

python可視化這個視頻,我已經下載下來,需要的童鞋可在微信公眾號「Python數據之道」後台回復關鍵字獲取視頻,關鍵字如下:

2017-024」(不含引號)

相關文章:

Python可視化:Seaborn庫熱力圖使用進階

python求職Top10城市,來看看是否有你所在的城市

關於matplotlib,你要的餅圖在這裡

用Pandas獲取商品期貨價格並可視化

加入微信群

請在微信公眾號「Python數據之道」底部菜單欄點擊菜單「微信群」。

更多精彩文章

請在微信公眾號底部菜單欄點擊菜單「知識講堂」。更多文章截圖如下:


推薦閱讀:

重要的是圖表思維,而不是工具
利用R語言製作出14種漂亮的交互數據可視化
另一版的「知乎答案的時間段分布」
Gartner 2016年商業智能與分析平台魔力象限
數據可視化基礎——數據模型

TAG:Python | 数据可视化 | Python库 |