Python可視化工具介紹——找到合適的庫

Python有很多可視化工具漓摩,大體上可以分為基于matplotlib的工具庫和基于JS的工具庫裙士。
有如此豐富的選擇是幸福的,無論你要畫什么圖管毙,都能找到相對的庫腿椎。但與此同時,弄清楚使用哪個工具更合適可能非常具有挑戰(zhàn)性夭咬。本文對常用的一些可視化工具進行介紹啃炸,并說明它們之間的主要區(qū)別。


可視化工具一覽

基于matplotlib的可視化工具

在介紹基于matplotlib的工具之前卓舵, 首先介紹一些matplotlib庫南用。正如《Overview of Python Visualization Tools》中所介紹的——“Matplotlib is the grandfather of python visualization packages”——matplotlib是第一個python可視化庫,也是使用最廣泛的可視化工具之一掏湾。它參考MATLAB對低級命令進行了封裝裹虫,有著非常強大的功能,能繪制絕大多數(shù)常用的圖融击,同時支持非常豐富的配置筑公。(參見官網(wǎng)的matplotlib圖例
但隨之而來的是復(fù)雜性,往往需要相對較多的代碼才能得到想要的效果尊浪。加之其默認的繪圖風格過于簡約復(fù)古匣屡,想要對其美化更是要花些功夫。

  • Seaborn
    Seaborn是基于matplotlib的可視化庫拇涤。它提供了一些更美觀的配置選項捣作,同時可以用更簡單的代碼來創(chuàng)建復(fù)雜的圖。Seaborn封裝了很多統(tǒng)計繪圖函數(shù)鹅士,使得在做數(shù)據(jù)分析時非常方便券躁。
    seaborn圖例
  • Pandas
    Pandas基于matplotlib也提供較為簡單的API繪制圖形,如pandas.tools.plotting。其使用pandas DataFrame進行繪圖嘱朽,這使得可以使用Pandas從分析到繪圖無縫銜接旭贬。不過想要對圖進行進一步的調(diào)整,就需要跳入matplotlib進行設(shè)置搪泳,而無法完全通過pandas進行操作。
  • ggplot
    與seaborn類似扼脐,ggplot也基于matplotlilb岸军,旨在以一種簡單的方式改善matplotlib可視化的美化問題。與seaborn的不同之處在于它是 ggplot2為R語言準備的一個端口瓦侮,所以它的一些api不是基于python而是基于R語言的艰赞。ggoplot利用了圖形語法的概念,是一種不同的繪圖邏輯肚吏。

在進行可視化時通常涉及到地理信息的處理方妖。除了常規(guī)的折線,柱狀圖之外罚攀,空間分布也是數(shù)據(jù)可視化中非常重要的一項党觅。Python中一些庫則專門處理涉及地理信息圖形的工作,比如Basemap斋泄,Cartopy等杯瞻。此外,geopandas擴展了pandas的繪圖模塊以支持地圖和幾何操作炫掐,并且相比Basemap和Cartopy處理效率相對更高魁莉,處理步驟更簡單一些。

基于JS的可視化工具

基于matplotlib的可視化工具存在一個很明顯的缺點募胃,是其繪圖處理速度低旗唁,尤其是在實時交互和圖形快速更新等方面
對于圖基于JS開發(fā)的可視化庫相對于matpltolib來說,交互可視化正是它的優(yōu)勢痹束。

  • Bokeh和HoloViews
    Bokeh和HoloViews是開源的交互式可視化庫检疫。它們都是屬于PyViz生態(tài)(可參見PyViz生態(tài))。
    HoloViews用于即時可視化數(shù)據(jù)的聲明對象参袱,從方便的高級規(guī)范構(gòu)建Bokeh圖
    Bokeh致力于在現(xiàn)代Web瀏覽器中生成可視化效果电谣。它旨在進行交互式Web可視化。
  • plotly
    plotly區(qū)別于其他工具抹蚀,是企業(yè)級分析和可視化的在線工具剿牺。其基于開源的可視化框架Dash,并提供了很多語言(比如MATLAB环壤,Python晒来,R等)的接口,并與pandas無縫集成郑现。
  • Cufflinks
    Cufflinks將Plotly直接綁定到pandas數(shù)據(jù)幀湃崩。結(jié)合了Pandas的靈活性荧降,比Plotly更有效,語法甚至比plotly簡單攒读。使用plotly的Python庫朵诫,您可以使用DataFrame的系列和索引來描述圖形,但是使用Cufflinks可以直接繪制它薄扁。
  • GeoViews
    GeoViews同樣是PyViz的產(chǎn)品剪返,專門用于可視化的地理數(shù)據(jù),可以與HoloViews對象混合和匹配邓梅。
    GeoViews樣例
  • Folium
    Folium是另一個用于繪制空間數(shù)據(jù)的“神庫”脱盲,建立在Python生態(tài)系統(tǒng)的數(shù)據(jù)優(yōu)勢和Leaflet.js庫的映射優(yōu)勢之上。你可以在python中操作數(shù)據(jù)日缨,然后通過folium在Leaflet地圖中將其可視化钱反。
  • Altair
    Altair類似Seaborn用于統(tǒng)計可視化。是一種聲明性統(tǒng)計可視化庫匣距,是JavaScript的高級可視化庫Vega-Lite的包裝器面哥。Altair的API也是基于圖形語法的,數(shù)據(jù)圍繞Pandas Dataframe構(gòu)建墨礁。


總結(jié)

根據(jù)具體的需要選擇更合適的工具幢竹,對常見的一些工具庫,可以作如下總結(jié)恩静。

  • 對于沒有交互需求的圖焕毫,可以使用基于matplotlib的工具
    對于簡單的圖表繪制任務(wù),直接使用Pandas是非常方便的驶乾。但在對圖進行定制化操作是需要使用matplotlib來實現(xiàn)邑飒。
    對于較為復(fù)雜的可視化修以及統(tǒng)計分析需求,Seaborn 有更簡便的實現(xiàn)级乐,同時有很好的美化功能疙咸。但仍需要 matplotlib 的知識來調(diào)整。ggplot也是不錯的選擇风科。
    對地理空間的可視化需求撒轮,則考慮Basemap/Cartopy/geopandas。
  • 對于交互可視化贼穆,則基于JS的工具有很好的性能
    如果需要建立可視化服務(wù)器题山,bokeh 將是一個強大的工具。并用GeoViews來解決地理可視化的需求故痊。
    Plotly可以創(chuàng)建最具互動性的圖表顶瞳。可以離線保存,并創(chuàng)建非常豐富的基于web的可視化圖表慨菱。
    對有分析需求的任務(wù)可以考慮使用Altair焰络。



參考:
Overview of Python Visualization Tools
Python可視化工具概覽
seaborn官網(wǎng)
matplotlib官網(wǎng)
plotly官網(wǎng)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市符喝,隨后出現(xiàn)的幾起案子闪彼,更是在濱河造成了極大的恐慌,老刑警劉巖协饲,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件备蚓,死亡現(xiàn)場離奇詭異,居然都是意外死亡囱稽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門二跋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來战惊,“玉大人,你說我怎么就攤上這事扎即⊥袒瘢” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵谚鄙,是天一觀的道長各拷。 經(jīng)常有香客問我,道長闷营,這世上最難降的妖魔是什么烤黍? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮傻盟,結(jié)果婚禮上速蕊,老公的妹妹穿的比我還像新娘。我一直安慰自己娘赴,他們只是感情好规哲,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诽表,像睡著了一般唉锌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竿奏,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天袄简,我揣著相機與錄音,去河邊找鬼议双。 笑死痘番,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播汞舱,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼伍纫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了昂芜?” 一聲冷哼從身側(cè)響起莹规,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泌神,沒想到半個月后良漱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡欢际,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年母市,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片损趋。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡患久,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浑槽,到底是詐尸還是另有隱情蒋失,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布桐玻,位于F島的核電站篙挽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏镊靴。R本人自食惡果不足惜铣卡,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望邑闲。 院中可真熱鬧算行,春花似錦、人聲如沸苫耸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽褪子。三九已至量淌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嫌褪,已是汗流浹背呀枢。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笼痛,地道東北人裙秋。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓琅拌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親摘刑。 傳聞我的和親對象是個殘疾皇子进宝,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容