五個(gè)創(chuàng)建交互式圖表的Python庫(kù)
數(shù)據(jù)可視化專家Andy Kirk說過,數(shù)據(jù)可視化分為兩類:探索性可視化圖表和解釋性可視化圖表。解釋性可視化圖表的目標(biāo)是進(jìn)行描述——它們是根據(jù)對(duì)事物表面的關(guān)鍵線索而被仔細(xì)構(gòu)造出來的。
另一方面,探索性可視化圖表建立了與數(shù)據(jù)庫(kù)或主題事件的互動(dòng),它們幫助用戶探索數(shù)據(jù),讓他們發(fā)掘自己的觀點(diǎn):發(fā)現(xiàn)他們自己認(rèn)為相關(guān)的或者感興趣的事物。
通常,探索性可視化圖表是交互式的。盡管現(xiàn)在有許多Python繪圖庫(kù),但只有少數(shù)可以創(chuàng)建能夠使你在線嵌入和發(fā)布的交互圖表。今天與大家分享五個(gè)我們最喜愛的Python繪圖庫(kù)。
mpld3
Mpld3 將Phython的核心繪圖庫(kù)matplotlib和備受歡迎的JavaScript圖表庫(kù)D3結(jié)合在一起,創(chuàng)建了與瀏覽器兼容的可視化圖形。你可以在matplotlib中繪制一張圖表,運(yùn)用Phython和JavaScript插件增加交互功能,然后用D3渲染。
Mpld3包含縮放、平移和增加提示工具條(當(dāng)鼠標(biāo)懸浮于某一數(shù)據(jù)點(diǎn)上,出現(xiàn)提示信息)等內(nèi)置插件。然而,Mpld3的真正亮點(diǎn)在于它齊全的API,允許讓你創(chuàng)造自定義插件。如果你熟悉D3和JavaScript,就可以創(chuàng)造無(wú)窮盡的各種圖形。
當(dāng)你準(zhǔn)備發(fā)布圖形的時(shí)候,在***添加一行額外的代碼,把你的圖形轉(zhuǎn)換成HTML和JavaScript字符,就可以嵌入到任何網(wǎng)頁(yè)中。
Mpld3 最適用于小型或中型數(shù)據(jù)庫(kù)。帶有成千上萬(wàn)數(shù)據(jù)點(diǎn)的圖形會(huì)降低瀏覽器處理速度。
pygal
Pygal是制作漂亮的即用圖表的優(yōu)選繪圖庫(kù),它只需要編寫很少的代碼。每種表格都被打包成一個(gè)類函數(shù)(如:pygal.Histogram()制作柱狀圖, pygal.Box() 制作箱型圖),并且它有各種色彩默認(rèn)風(fēng)格。如果想要更多掌控,你可以配置各種圖表元素——包括大小、標(biāo)題、標(biāo)簽和渲染。
圖表默認(rèn)顯示工具提示欄,但是目前不能放大、縮小或者平移圖表。
你可以通過SVGs的形式導(dǎo)出圖表,并且把它們加載到帶有嵌入標(biāo)記的網(wǎng)頁(yè)中,或在HTML中直接插入代碼。像mpld3一樣,pygal適合更小型的數(shù)據(jù)庫(kù)。
Bokeh
Bokeh受到《The Grammar of Graphics》中概述的概念啟發(fā)。 你可以把各個(gè)組件逐個(gè)疊加在一起來創(chuàng)建最終的圖表——例如,你可以以坐標(biāo)軸為起點(diǎn),添加點(diǎn)、線、標(biāo)簽等。
圖表可以輸出為JSON對(duì)象、HTML文件或者交互式網(wǎng)絡(luò)應(yīng)用。Bokeh在允許用戶在瀏覽器中操作數(shù)據(jù)方面做得尤為突出,用戶可以通過滑動(dòng)和下拉菜單進(jìn)行篩選。與mpld3一樣,你可以在其中縮放和平移操作圖表,但是也可以關(guān)注通過框或套索選中的一組數(shù)據(jù)點(diǎn)上。
Holo Views
利用Bokeh后端的地圖
HoloView實(shí)際上并不是一個(gè)繪圖庫(kù)。相反,它讓你構(gòu)建有助于可視化的數(shù)據(jù)結(jié)構(gòu)。當(dāng)你把數(shù)據(jù)移入HoloView 容器對(duì)象(Container object)中,比如用于多變量分析的網(wǎng)格矩陣(GridMatrix)或用于顯示相鄰成份的布局(Layout)時(shí),你可以直觀地探索數(shù)據(jù)。在matplotlib或Bokeh后端中繪圖是分開進(jìn)行的,因此,你能夠?qū)W⒂跀?shù)據(jù),而非編寫繪圖代碼。
HoloViews提供的主要交互功能是滑動(dòng)條,因此,人們能夠通過一個(gè)變量來觀察它的影響。當(dāng)使用Boken后端時(shí),你可以結(jié)合滑塊和Bokeh的工具探索圖形,例如對(duì)它進(jìn)行縮放和平移。
HoloViews融合了Seaborn和pandas,擴(kuò)大了pandas數(shù)據(jù)幀和Seaborn的統(tǒng)計(jì)圖表的功能。
plotly
從簡(jiǎn)單的條形圖表到復(fù)雜的3D網(wǎng)格圖形,Plotly擁有廣泛的具有出版物品質(zhì)的圖表類型。
Plotly是一個(gè)默認(rèn)基于網(wǎng)絡(luò)的服務(wù),但是你可以在Python中使用離線庫(kù),并且上傳圖表到Plotly免費(fèi)公共服務(wù)器或付費(fèi)私人服務(wù)器。從那里,你可以把圖表嵌入到網(wǎng)頁(yè)中。
所有的Plotly圖表包含工具提示,一旦利用Plotly的JavaScript API把圖表嵌入后,你就可以在其頂部設(shè)置自定義控件(如滑塊和篩選)。
另一種在Plotly中操作和分享圖形的方式是在Mode中進(jìn)行操作。你可以用SQL拖入數(shù)據(jù),在Phthon Notebook中,利用Plotly離線庫(kù)繪制查詢的結(jié)果,之后把交互式圖表添加到報(bào)告中。這份報(bào)告以可分享的URL在線,也可以嵌入其他頁(yè)面,例如下圖中展示的,從1950年開始,樂高積木套裝尺寸是如何改變的: