五個創建交互式圖表的Python庫

AunHuu 8年前發布 | 14K 次閱讀 Python Python開發 JavaScript

數據可視化專家Andy Kirk說過,數據可視化分為兩類:探索性可視化圖表和解釋性可視化圖表。解釋性可視化圖表的目標是進行描述——它們是根據對事物表面的關鍵線索而被仔細構造出來的。

另一方面,探索性可視化圖表建立了與數據庫或主題事件的互動,它們幫助用戶探索數據,讓他們發掘自己的觀點:發現他們自己認為相關的或者感興趣的事物。

通常,探索性可視化圖表是交互式的。盡管現在有許多Python繪圖庫,但只有少數可以創建能夠使你在線嵌入和發布的交互圖表。今天與大家分享五個我們最喜愛的Python繪圖庫。

mpld3

自定義插件示例

Mpld3 將Phython的核心繪圖庫matplotlib和備受歡迎的JavaScript圖表庫D3結合在一起,創建了與瀏覽器兼容的可視化圖形。你可以在matplotlib中繪制一張圖表,運用Phython和JavaScript插件增加交互功能,然后用D3渲染。

Mpld3包含縮放、平移和增加提示工具條(當鼠標懸浮于某一數據點上,出現提示信息)等內置插件。然而,Mpld3的真正亮點在于它齊全的API,允許讓你創造自定義插件。如果你熟悉D3和JavaScript,就可以創造無窮盡的各種圖形。

當你準備發布圖形的時候,在最后添加一行額外的代碼,把你的圖形轉換成HTML和JavaScript字符,就可以嵌入到任何網頁中。

Mpld3 最適用于小型或中型數據庫。帶有成千上萬數據點的圖形會降低瀏覽器處理速度。

pygal

基本點圖

Pygal是制作漂亮的即用圖表的優選繪圖庫,它只需要編寫很少的代碼。每種表格都被打包成一個類函數(如:pygal.Histogram()制作柱狀圖, pygal.Box() 制作箱型圖),并且它有各種色彩默認風格。如果想要更多掌控,你可以配置各種圖表元素——包括大小、標題、標簽和渲染。

圖表默認顯示工具提示欄,但是目前不能放大、縮小或者平移圖表。

你可以通過SVGs的形式導出圖表,并且把它們加載到帶有嵌入標記的網頁中,或在HTML中直接插入代碼。像mpld3一樣,pygal適合更小型的數據庫。

Bokeh

交叉過濾器示例

Bokeh受到《The Grammar of Graphics》中概述的概念啟發。 你可以把各個組件逐個疊加在一起來創建最終的圖表——例如,你可以以坐標軸為起點,添加點、線、標簽等。

圖表可以輸出為JSON對象、HTML文件或者交互式網絡應用。Bokeh在允許用戶在瀏覽器中操作數據方面做得尤為突出,用戶可以通過滑動和下拉菜單進行篩選。與mpld3一樣,你可以在其中縮放和平移操作圖表,但是也可以關注通過框或套索選中的一組數據點上。

Holo Views

利用Bokeh后端的地圖

HoloView實際上并不是一個繪圖庫。相反,它讓你構建有助于可視化的數據結構。當你把數據移入HoloView 容器對象(Container object)中,比如用于多變量分析的網格矩陣(GridMatrix)或用于顯示相鄰成份的布局(Layout)時,你可以直觀地探索數據。在matplotlib或Bokeh后端中繪圖是分開進行的,因此,你能夠專注于數據,而非編寫繪圖代碼。

HoloViews提供的主要交互功能是滑動條,因此,人們能夠通過一個變量來觀察它的影響。當使用Boken后端時,你可以結合滑塊和Bokeh的工具探索圖形,例如對它進行縮放和平移。

HoloViews融合了Seaborn和pandas,擴大了pandas數據幀和Seaborn的統計圖表的功能。

plotly

范圍滑塊示例

從簡單的條形圖表到復雜的3D網格圖形,Plotly擁有廣泛的具有出版物品質的圖表類型。

Plotly是一個默認基于網絡的服務,但是你可以在Python中使用離線庫,并且上傳圖表到Plotly免費公共服務器或付費私人服務器。從那里,你可以把圖表嵌入到網頁中。

所有的Plotly圖表包含工具提示,一旦利用Plotly的JavaScript API把圖表嵌入后,你就可以在其頂部設置自定義控件(如滑塊和篩選)。

另一種在Plotly中操作和分享圖形的方式是在Mode中進行操作。你可以用SQL拖入數據,在Phthon Notebook中,利用Plotly離線庫繪制查詢的結果,之后把交互式圖表添加到報告中。這份報告以可分享的URL在線,也可以嵌入其他頁面,例如下圖中展示的,從1950年開始,樂高積木套裝尺寸是如何改變的:

 

 

來自:http://www.36dsj.com/archives/69950

 

 本文由用戶 AunHuu 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!