如今數據可視化的應用場景越來越廣泛,幾乎各個領域、各個學科都有數據可視化發揮作用的地方。Python作為一個簡單易學的語言,也在這方面為我們提供了不少便捷的工具。
本文整理的一些常見且實用的 Python 可視化庫,相信總有一款適合你!
matplotlib可謂是Python數據可視化庫中的泰斗。作為一個Python 2維繪圖庫,它已經成為python中公認的數據可視化工具,通過Matplotlib可以很輕松地畫一些或簡單或復雜的圖形,幾行代碼即可生成直方圖、條形圖、散點圖、密度圖等等。
具體來說,它是一個在Python下實現的類matlab的純Python的三方庫,旨在用Python實現matlab的功能,是Python中最出色的繪圖庫之一,功能完善,同時也繼承了Python的簡單明了的風格,其可以很方便的設計和輸出二維以及三維的數據,其提供了常規的笛卡爾坐標,極坐標,球坐標,三維坐標等,其輸出的圖片質量也達到了科技論文中的印刷質量,日常的基本繪圖更不在話下。
官網
Seaborn是基于matplotlib的圖形可視化python包,它在matplotlib的基礎上進行了更高級的API封裝,提供了一種高度交互式界面,從而使得作圖更加容易,便于用戶能夠做出各種有吸引力的統計圖表。它能高度兼容numpy與pandas數據結構以及scipy與statsmodels等統計模式。Seaborn利用matplotlib的強大功能,幾行代碼就能創建漂亮的圖表。其與matplotlib主要的區別是Seaborn的默認樣式以及更美觀、更現代的調色板設計。因為Seaborn建立在matplotlib之上,所以你需要了解matplotlib來調整 Seaborn 的默認值。http://seaborn.pydata.org/
點擊查看往期文章用Sesborn繪制圖形的教程:
Bokeh是一個專門針對Web瀏覽器的呈現功能的交互式可視化Python庫,支持現代化web瀏覽器展示(圖表可以輸出為JSON對象,HTML文檔或者可交互的網絡應用),這是Bokeh與其它可視化庫最核心的區別。它提供風格優雅、簡潔的D3.js的圖形化樣式,并將此功能擴展到高性能交互的數據集,數據流上。使用Bokeh可以快速便捷地創建交互式繪圖、儀表板和數據應用程序等。Bokeh能與NumPy,Pandas,Blaze等大部分數組或表格式的數據結構完美結合。matplotlib和seaborn都是面向過程的,在數據分析過程中可以呈現;Bokeh是在最后的結果呈現,可做動圖,可只打開一張表,也可以做儀表盤的排版,可做圖表的聯動。從概念上講,Bokeh 類似于 ggplot,它們都是用圖形語法來構建圖片,但 Bokeh 具備可以做出專業圖形和商業報表且便于使用的界面。http://bokeh.pydata.org/en/latest/
Plotly是一個開源,交互式和基于瀏覽器的Python圖形庫,可以創建能在儀表板或網站中使用的交互式圖表(可以將它們保存為html文件或靜態圖像)。Plotly基于plotly.js,而plotly.js又基于D3.js,因此它是一個高級圖表庫,與Bokeh一樣,Plotly的強項是制作交互式圖 ,有超過30種圖表類型, 提供了一些在大多數庫中沒有的圖表 ,如等高線圖、樹狀圖、科學圖表、統計圖表、3D圖表、金融圖表等。plotly繪制的圖能直接在jupyter中查看,也能保存為離線網頁,或者保存在plot.ly云端服務器內,以便在線查看。plotly所支持的語言不只是Python,還支持諸如R,matlab,javescript等語言。如果使用Python語言,建議用jupyter notebook或jupyterlab作為IDEPlotly的Python graphing library在網上提供了交互式的、公開的,高質量的圖表集,可與R、python、matlab等軟件對接。在申請了API密鑰后,可以一鍵將統計圖形同步到云端。但美中不足的是,打開國外網站會比較費時,且一個賬號只能創建25個圖表,除非你升級或刪除一些圖表。點擊查看往期文章用plotly繪制圖形的教程:
pyecharts是基于 Echarts 開發的,是一個用于生成 Echarts 圖表的類庫。Echarts 是百度開源的一個數據可視化 JS 庫,憑借著良好的交互性,精巧的圖表設計,得到了眾多開發者的認可。而 Python,很適合用于數據處理。當數據分析遇上數據可視化時,pyecharts 就誕生了,實際上就是 Echarts 與 Python 的對接。值得注意的是pyecharts目前有 v0.5.X 和 v1 兩個大版本,兩者之間并不兼容,0.5.x 版本也不再進行維護,v1 是一個全新的版本,代碼風格與v0.5.X也發生了比較大的變化,需要大家重新去學。https://github.com/pyecharts/pyecharts/
官方教程:
Networkx于2002年5月面世,是一個用Python語言開發的圖論與復雜網絡建模工具,內置了常用的圖與復雜網絡分析算法,可以方便的進行復雜網絡數據分析、仿真建模等工作。Networkx 是基于 matplotlib 的,是圖形分析和可視化的一個很好的絕佳解決方案,可以快速簡便地用圖形表示網絡之間的連接。networkx支持創建簡單無向圖、有向圖和多重圖;內置許多標準的圖論算法,節點可為任意數據;支持任意的邊值維度,功能豐富,簡單易用。https://networkx.github.io/documentation/stable/tutorial.html
點擊查看往期文章用Networkx繪制圖形的教程:
wordcloud基于Python的詞云生成類庫。詞云圖,也叫文字云,是對文本中出現頻率較高的“關鍵詞”予以視覺化的展現,詞云圖過濾掉大量的低頻低質的文本信息,使得瀏覽者只要一眼掃過文本就可領略文本的主旨。https://amueller.github.io/word_cloud/
點擊查看往期文章用wordcloud繪制圖形的教程:
ggplot是基于R的ggplot2和圖形語法的Python的繪圖系統,實現了更少的代碼繪制更專業的圖形。它使用一個高級且富有表現力的API來實現線,點等元素的添加,顏色的更改等不同類型的可視化組件的組合或添加,而不需要重復使用相同的代碼,然而這對那些試圖進行高度定制的的來說,ggplot并不是最好的選擇,盡管它也可以制作一些非常復雜、好看的圖形。正如其創造者所說,ggplot不是為創建高度定制的圖形而設計的,它為更簡單的繪圖方法犧牲了復雜性。ggplot與pandas緊密聯系。如果你打算使用ggplot,最好將數據保存在DataFrames中。ggplot的操作與matplotlib不同:它允許你對組件進行分層以創建完整的繪圖。例如,你可以從坐標軸開始,然后添加點,再添加線、趨勢線等。http://ggplot.yhathq.com/
相關教程
官方文檔:
http://ggplot.yhathq.com/docs/index.html
中文博客:
https://www.cnblogs.com/kkdaddd/p/8681960.html
由于大多數Python數據可視化庫都不提供地圖,所以最好有一個專門針對它們的庫,Geoplotlib就是很好的一個。geoplotlib是python的一個用于地理數據可視化和繪制地圖的工具箱,你可以用它來創建各種各樣的地圖類型,比如等值線圖、熱圖和點密度地圖。它還提供了一個原始數據和所有可視化之間的基本接口,支持在純python中開發硬件加速的交互式可視化,并提供點映射、內核密度估計、空間圖、泰森多邊形圖、形狀文件和許多更常見的空間可視化的實現。除了為常用的地理數據可視化提供內置的可視化功能外,geoplotlib還允許通過定義定制層來定義復雜的數據可視化(繪制OpenGL,如分數、行和具有高性能的多邊形),創建動畫。https://residentmario.github.io/geoplot/index.html
https://residentmario.github.io/geoplot/quickstart/quickstart.html
Pygal 和其它常用的繪圖包一樣,也是用圖形框架語法來構建圖像的。它是一種開放標準的矢量圖形語言,基于XML(Extensible Markup Language),與Bokeh和Plotly一樣,pygal提供了可以嵌入到Web瀏覽器中的交互式繪圖,可以生成多個輸出格式的高分辨率Web圖形頁面,還支持給定數據的html表導出。用戶可以直接用代碼來描繪圖像,可以用任何文字處理工具打開SVG圖像,通過改變部分代碼來使圖像具有交互功能,并且可以插入到HTML中通過瀏覽器來觀看。只要你在處理較小的數據集,SVG就可以幫你做得很好。但是,如果你制作的圖表中有數十萬個數據點,它們將很難呈現,并且會變得遲鈍。由于每種圖表類型都被包裝成一個方法,并且內置的樣式很漂亮,所以用幾行代碼就可以很容易地創建一個美觀的圖表。http://www.pygal.org/en/stable/
官方文檔:
http://www.pygal.org/en/stable/documentation/index.html
中文博客:
https://blog.51cto.com/12731497/2160306
Cufflinks將Plotly直接綁定到pandas數據幀。這種組合非常驚人,結合了Pandas的靈活性,比Plotly更有效,語法甚至比plotly簡單。使用plotly的Python庫,您可以使用DataFrame的系列和索引來描述圖形,但是使用Cufflinks可以直接繪制它。https://github.com/santosjorge/cufflinks
https://blog.csdn.net/u010986753/article/details/98937811
Folium是一個建立在Python系統之上的js庫,集Python生態系統的數據優勢和Leaflet.js庫的映射優勢之上。既可以在python中操作數據,然后通過folium在Leaflet地圖中將其可視化,還可自定義箭頭,網格等HTML格式的地圖標記。Folium是一個用于繪制空間數據的“神庫”。你還可以使用folium生成熱圖和等值區域圖。該庫還附有一些內置的地形數據。https://github.com/python-visualization/folium
官方文檔:
https://python-visualization.github.io/folium/quickstart.html#Getting-Started
中文博客:
https://www.cnblogs.com/feffery/p/9282808.html
Altair是一個聲明性統計(declarative statistical)可視化python庫,基于Vega和Vega-Lite。聲明意味著只需要提供數據列與編碼通道之間的鏈接,例如x軸,y軸,顏色等,其余的繪圖細節它會自動處理。聲明使Altair變得簡單,友好和一致。使用Altair可以輕松設計出有效且美觀的可視化代碼。Altair使您能夠使用強大而簡潔的可視化語法快速開發各種統計可視化圖表。https://altair-viz.github.io/
https://altair-viz.github.io/gallery/index.html
D3.js是目前市場上最好的數據可視化庫之一,既可以將它與python一起使用,也可以與R一起使用。最初,它可以與JavaScript一起使用,根據數據操作文檔。您可以使用HTML,SVG和CSS將數據變成活靈活現的圖表。D3.js并不要求您將自己綁定到任何專有框架,因為現代瀏覽器擁有D3.js所需的一切,它還用于組合強大的可視化組件和數據驅動的DOM操作方法。Python 和 R 使D3.js變得更簡單,如果你是JS專業人員更不需要猶豫,D3.js是絕對是上佳之選。官方文檔:
https://github.com/d3/d3/wiki
中文博客:
https://blog.csdn.net/hyfound/article/details/80422395
處理丟失的數據是一件痛苦的事。沒有高質量的數據,就沒有高質量的數據挖掘結果,當我們做監督學習算法,難免會碰到混亂的數據集,缺失的值,當缺失比例很小時,可直接對缺失記錄進行舍棄或進行手工處理,但如果情況更為復雜呢?missingno提供了一個小型的靈活的、易于使用的數據可視化和實用工具集,用圖像的方式讓你能夠快速評估數據缺失的情況,而不是在數據表里面步履維艱。你可以根據數據的完整度對數據進行排序或過濾,或者根據熱度圖或樹狀圖來考慮對數據進行修正。missingno 是基于matplotlib建造的一個模塊,出圖速度很快,并且能夠靈活的處理pandas數據,它允許你通過直觀的總結快速衡量數據集的完整性,而不是艱難地瀏覽表格。你可以根據熱圖或樹形圖中的完成度或點相關來過濾和排序數據。<http://www.github.com/ResidentMario/missingno>
https://blog.csdn.net/Andy_shenzl/article/details/81633356
“Leather是一個為那些現在需要圖表而不在乎是否完美的人設計的Python圖表庫”,Leather的創建者Christopher Groskopf如是說。Leather一種可讀且用戶界面友好的API,新手也能快速掌握。圖像成品非常基礎,適用于所有的數據類型,針對探索性圖表進行了優化,產生與比例無關的SVG圖,這樣在你調整圖像大小的時候就不會損失圖像質量。https://leather.readthedocs.io/en/latest/examples.html
HoloViews是一個開源的Python庫,可以用非常少的代碼行完成數據分析和可視化,除了默認的matplotlib后端外,還添加了一個Bokeh后端。Bokeh提供了一個強大的平臺,通過結合Bokeh提供的交互式小部件,可以使用HTML5 canvas和WebGL快速生成交互性和高維可視化,非常適合于數據的交互式探索。http://holoviews.org/user_guide/index.html
PyQtGraph是在PyQt4 / PySide和numpy上構建的純 python的GUI圖形庫。它主要用于數學,科學,工程領域。盡管它完全是在python中編寫的,但它對數據處理、數字運算和Qt的GraphicsView框架的影響巨大,可以最少的工作量完成,數據可視化速度也非常快。http://www.pyqtgraph.org/
官方文檔:
http://www.pyqtgraph.org/documentation/index.html
中文博客:
https://zmister.com/archives/219.html
VisPy是一個用于交互式科學可視化的Python庫,快速、可伸縮、且易于使用,是一個高性能的交互式2D / 3D數據可視化庫,利用了現代圖形處理單元(gpu)的計算能力,通過OpenGL庫來顯示非常大的數據集。http://vispy.org/index.html>
https://vispy.readthedocs.io/en/latest/documentation.html
Vincent是一個很酷的可視化工具,它以Python數據結構作為數據源,然后把它翻譯成Vega可視化語法,并且能夠在d3.js上運行。這讓你可以使用Python腳本來創建漂亮的3D圖形來展示你的數據。Vincent底層使用Pandas和DataFrames數據,并且支持大量的圖表—-條形圖、線圖、散點圖、熱力圖、堆條圖、分組條形圖、餅圖、圈圖、地圖等等。https://vincent.readthedocs.io/en/latest/
https://vincent.readthedocs.io/en/latest/quickstart.html
mpld3基于python的graphing library和D3js,匯集了Matplotlib流行的項目的JavaScript庫,用于創建web交互式數據可視化。通過一個簡單的API,將matplotlib圖形導出為HTML代碼,這些HTML代碼可以在瀏覽器內使用。https://blog.csdn.net/qq_41185868/article/details/81842840
Mayavi2是一個通用的、跨平臺的三維科學數據可視化工具,可以在二維和三維空間中顯示標量、向量和張量數據,也可通過自定義源、模塊和數據過濾器輕松擴展。Mayavi2也可以作為一個繪圖引擎,生成matplotlib或gnuplot腳本,也可以作為其他應用程序的交互式可視化的庫,將生成的圖片嵌入到其他應用程序中。http://docs.enthought.com/mayavi/mayavi/
https://blog.csdn.net/ouening/article/details/76595427
本文收集了常見的Python繪圖庫,應付一般的繪圖任務可是綽綽有余了,不過數據可視化有這么多種方法可供選擇,選用最好最便捷的方案就變得極具挑戰性了。這里并不建議大家一個個去學,收藏起來,等有需求后再有目的性的結合起來去學效果可能會更佳。但在這里,我還是給出一個我的觀點:倘若你想做一些專業的統計圖表,我推薦你使用Seaborn,Altair;數學,科學,工程領域的學者可以選擇PyQtGraph,VisPy,Mayavi2;網絡研究和分析方面NetworkX,絕對是一個不錯的選擇,地理投影就選geoplotlib,folium;評估數據缺失就選missingno;有了HoloViews再也不用為高維圖形犯愁;如果你不喜歡花俏的修飾,那就選擇Leather;如果你是一名有MATLAB基礎的新手,matplotlib相信你會很好上手;有R基礎的可以選ggplot;即使你是小白或懶癌晚期者,Plotly也將會是你的一大福音,它提供了大量圖表集可供你選擇與使用。
本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請
點擊舉報。