前言

本文主要摘錄自 pycon 2017大會(huì)的一個(gè)演講,同時(shí)結(jié)合自己的一些理解。

pycon 2017的相關(guān)演講主題是“The Python Visualization Landscape”。

先來(lái)一張全景圖鎮(zhèn)樓~~

 

 

看完這張圖是不是有點(diǎn)懵?

別著急,我們一起來(lái)看看后面的闡述。

python可視化庫(kù)可以大致分為幾類:

  • 基于matplotlib的可視化庫(kù)

  • 基于JS的可視化庫(kù)

  • 基于上述兩者或其他組合功能的庫(kù)

基于matplotlib的可視化庫(kù)

matplotlib是python可視化庫(kù)的基礎(chǔ)。matplotlib庫(kù)的設(shè)計(jì)參考了matlab,甚至連名稱也是以“mat”開頭。

matplotlib庫(kù)的一些優(yōu)勢(shì):(翻譯比較別扭,英文原文也附后)

  • 設(shè)計(jì)很像Matlab,容易進(jìn)行轉(zhuǎn)換(Designed like Matlab: switching was easy)

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

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

  • 有長(zhǎng)時(shí)間良好運(yùn)行的歷史 (Well-tested, standard tool for over a decade)

matplotlib庫(kù)的一些缺點(diǎn):

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

  • 有時(shí)候默認(rèn)的樣式設(shè)計(jì)比較弱(Sometimes poor stylistic defaults)

  • 對(duì)網(wǎng)頁(yè)以及交互式繪圖的支持較弱(Poor support for web/interactive graphs)

  • 數(shù)據(jù)量大時(shí)經(jīng)常運(yùn)行較慢(Often slow for large & complicated data)

Matplotlib自2003年發(fā)布以來(lái),使用情況還是呈現(xiàn)了良好的趨勢(shì):

 

 

Matplotlib部分繪圖實(shí)例如下:

 

 

關(guān)于matplotlib,微信公眾號(hào)之前寫過(guò)一篇關(guān)于餅圖的介紹,有興趣的可閱覽下。

 

關(guān)于matplotlib,你要的餅圖在這里

也因此,后續(xù)開發(fā)者都吸取了matplotlib庫(kù)的優(yōu)點(diǎn),經(jīng)過(guò)對(duì)matplotlib庫(kù)的缺點(diǎn)進(jìn)行改進(jìn),從而衍生出一系列的可視化庫(kù)。

基于matplotlib的庫(kù)概覽如下:

 

 

下面介紹兩個(gè)重要的基于matplotlib的第三方庫(kù):pandas以及seaborn

Pandas

可能我們平時(shí)使用pandas時(shí)更多的是用來(lái)進(jìn)行數(shù)據(jù)分析和處理,其實(shí)pandas也提供了較為簡(jiǎn)單的API來(lái)進(jìn)行圖形繪制。

我個(gè)人一般是用pandas來(lái)處理數(shù)據(jù),然后結(jié)合其他可視化庫(kù)(如matplotlib,seaborn,bokeh等)來(lái)繪圖圖形。

Pandas部分繪圖實(shí)例如下:

 

 

微信公眾號(hào)中部分文章的案例可供參考。

 

用Pandas獲取商品期貨價(jià)格并可視化

python求職Top10城市,來(lái)看看是否有你所在的城市

seaborn

Seaborn是基于matplotlib的Python可視化庫(kù)。它提供了一個(gè)高級(jí)別接口用于圖形繪制。

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

關(guān)于Searbon,微信公眾號(hào)之前寫過(guò)一篇關(guān)于熱力圖的介紹文章,有興趣的可閱覽下。

 

Python可視化:Seaborn庫(kù)熱力圖使用進(jìn)階

Seaborn部分繪圖實(shí)例如下:

 

 

詳細(xì)信息可在其官方網(wǎng)站查閱:

http://seaborn.pydata.org/

基于JavaScript的可視化庫(kù)

兩個(gè)受歡迎度較高的可視化庫(kù) bokeh 和 plotly

bokeh

Bokeh (Bokeh.js) 是一個(gè) Python 交互式可視化庫(kù),支持現(xiàn)代化Web瀏覽器,提供非常完美的展示功能。Bokeh 的目標(biāo)是使用 D3.js樣式提供優(yōu)雅,簡(jiǎn)潔新穎的圖形化風(fēng)格,同時(shí)提供大型數(shù)據(jù)集的高性能交互功能。Boken 可以快速的創(chuàng)建交互式的繪圖,儀表盤和數(shù)據(jù)應(yīng)用。

關(guān)于bokeh,微信公眾號(hào)之前寫過(guò)的文章用應(yīng)用過(guò)timeseries圖,有興趣的可閱覽下。

 

用Pandas獲取商品期貨價(jià)格并可視化

bokeh部分繪圖實(shí)例如下:

 

 

詳細(xì)信息可在其官方網(wǎng)站查閱:

http://bokeh.pydata.org

plotly

Plotly是另一個(gè)免費(fèi)進(jìn)行數(shù)據(jù)分析和繪制圖表的APP,建立在d3.js上。 Plotly圖可下載為SVG,EPS或PNG格式,并簡(jiǎn)單地導(dǎo)入到Illustrator或者Photoshop中。

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

plotly部分繪圖實(shí)例如下:

 

 

詳細(xì)內(nèi)容可以去官網(wǎng)參考:

https://plot.ly/python/

其他綜合類型庫(kù)

Holoviews

Holoviews能夠讓用戶構(gòu)建有助于可視化的數(shù)據(jù)結(jié)構(gòu),而且它包含豐富的可組合元素庫(kù),可以覆蓋、嵌套和輕松定位。同時(shí),它還支持快速數(shù)據(jù)探索。

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

由于筆者還沒具體了解過(guò)Holoviews的使用功能,這里將英文的描述直接放在下面,以免個(gè)人理解不準(zhǔn)確而產(chǎn)生誤導(dǎo)。

關(guān)于Holoviews的效果圖,可參考下面動(dòng)態(tài)圖,建議觀看原視頻,效果會(huì)好點(diǎn)。

 

 

 

Altair

Altairs起源于D3,但代碼編寫量要比D3簡(jiǎn)單。這里有兩幅對(duì)比的圖如下:

  • 用D3繪制的柱狀圖

 

 

  • 用Altairs繪制的柱狀圖

 

 

Altair 是 Python 高級(jí)聲明式可視化庫(kù)。Altair 提供一個(gè) Python API 在聲明式 manner 中構(gòu)建靜態(tài)統(tǒng)計(jì)可視化庫(kù)。

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

 

 

總的來(lái)說(shuō),Altairs讓開發(fā)者們更專注于數(shù)據(jù)及他們之間的關(guān)系,而不是一些不重要的細(xì)節(jié)。

最后,再放上這張Python可視化的全景圖,對(duì)于個(gè)人而言,不一定能全部熟悉使用,但是能熟練用好其中的一部分,實(shí)際應(yīng)用于工作及項(xiàng)目中,也就OK了。

 

 

關(guān)于視頻 

pycon 2017的相關(guān)演講主題的視頻在youtube上可觀看,由于墻的緣故,部分童鞋可能不能觀看視頻。

python可視化這個(gè)視頻,我已經(jīng)下載下來(lái),需要的童鞋可在微信公眾號(hào)“Python數(shù)據(jù)之道”后臺(tái)回復(fù)關(guān)鍵字獲取視頻,關(guān)鍵字如下:

2017-024”(不含引號(hào))

相關(guān)文章:

Python可視化:Seaborn庫(kù)熱力圖使用進(jìn)階

python求職Top10城市,來(lái)看看是否有你所在的城市

關(guān)于matplotlib,你要的餅圖在這里

用Pandas獲取商品期貨價(jià)格并可視化

 

作者:Lemon 
出處:個(gè)人微信公眾號(hào):“Python數(shù)據(jù)之道”(ID:PyDataRoad)和博客園:http://www.cnblogs.com/lemonbit/ 
本文版權(quán)歸作者所有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文出處,否則保留追究法律責(zé)任的權(quán)利。

http://www.cnblogs.com/lemonbit/p/6979581.html