交互式數據可視化,在Python中用Bokeh做到

交互式數據可視化,在Python中用Bokeh做到

關於轉載授權

大數據文摘作品,歡迎個人轉PO朋友圈,自媒體、媒體、機構轉載務必申請授權,後台留言「機構名稱+文章標題+轉載」,申請過授權的不必再次申請,只要按約定轉載即可,但文末需放置大數據文摘二維碼。

大數據文摘願意為讀者打造高質量【可視化討論群】,措施如下

(1)群內定期組織分享

(2)確保群內分享者和學習者數量適合(1:1),有分享能力者不限名額,學習者數量少於分享者,按申請順序排序。

點擊文末「閱讀原文」填表入群


編譯:黃念  席雄芬           
校對:王婧
圖片來源:bokeh.pydata.org


引言

 最近,我一直在看美國德克薩斯州奧斯汀舉辦的SciPy 2015會議上的一段影片——「用Blaze和Bokeh創建Python數據應用程序」,並且情不自禁地反復思考這兩個庫賦予世界各地使用Python的數據科學家們的強大能力。在本文中,我將帶你體驗使用Bokeh做到數據可視化的各種可能途徑,以及Bokeh為什麼是每位數據科學家的必備「神器」。

什麼是Bokeh?

Bokeh是一個專門針對Web瀏覽器的呈現功能的交互式可視化Python庫。這是Bokeh與其它可視化庫最核心的區別。正如下圖所示,它說明了Bokeh如何將數據展示到一個Web瀏覽器上的流程。

交互式數據可視化,在Python中用Bokeh做到

正如你所看到的,Bokeh捆綁了多種語言(Python, R, lua和Julia)。這些捆綁的語言產生了一個JSON文件,這個文件作為BokehJS(一個Javascript庫)的一個輸入,之後會將數據展示到現代Web瀏覽器上。

Bokeh可以像D3.js那樣創建簡潔漂亮的交互式可視化效果,即使是非常大型的或是流數據集也可以進行高效互動。Bokeh可以幫助所有人快速方便地創建互動式的圖表、控制面板以及數據應用程序。

Bokeh能為像我這樣的數據科學家提供什麼?

我起初是作為一名商業智能從業者(BIprofessional)開始我的數據科學之旅的,隨後,又逐漸學習了預測建模,數據科學和機器學習。我主要使用QlikView和Tableau進行數據可視化,用SAS和Python來做預測分析和數據分析。我幾乎沒有用過JavaScript。

因此,對於我之前所有的數據產品或想法,我只能要麼將其外包要麼通過網站線框圖向別人展示,這兩者都不適合創建快速原型。現在,有了Bokeh,我就可以繼續使用Python,並且快速創建這些原型。

Bokeh的優勢:

  • Bokeh允許你通過簡單的指令就可以快速創建複雜的統計圖,

  • Bokeh提供到各種媒體,如HTML,Notebook文檔和服務器的輸出

  • 我們也可以將Bokeh可視化嵌入flask和django程序

  • Bokeh可以轉換寫在其它庫(如matplotlib, seaborn和ggplot)中的可視化

  • Bokeh能靈活地將交互式應用、布局和不同樣式選擇用於可視化

Bokeh面臨的挑戰:

  • 與任何即將到來的開源庫一樣,Bokeh正在經歷不斷的變化和發展。所以,你今天寫的代碼可能將來並不能被完全再次使用。

  • 與D3.js相比,Bokeh的可視化選項相對較少。因此,短期內Bokeh無法挑戰D3.js的霸主地位。

綜合Bokeh的優點及其面臨的挑戰,Bokeh是當前用於快速開發原型產品的理想工具。然而,如果你想在產品的環境下搞點新東西,D3.js可能仍然是你最好的選擇。

用Bokeh做到可視化

Bokeh提供了強大而靈活的功能,使其操作簡單並高度定制化。它為用戶提供了多個可視化界面,如下圖所示:

交互式數據可視化,在Python中用Bokeh做到

  • 圖表(Charts):一個高級接口(high-level interface),用以簡單快速地建立複雜的統計圖表。

  • 繪圖(Plotting):一個中級接口(intermediate-level interface),以構建各種視覺符號為核心。

  • 模塊(Models):一個低級接口(low-level interface),為應用程序開發人員提供最大的靈活性。

本文中,我們僅涉及前兩個接口,圖表(Charts)和繪圖(Plotting)。

圖表

如上所述,它是一個高級接口,用於通過標準的可視化方式呈現信息。這些方式包括箱形圖、柱狀圖、面積圖、熱圖、甜甜圈圖和許多其它圖形。你只需輸入數據框(data frames)、numpy數組或字典就可以生成這些圖。

讓我們來看看創建一個圖表的通用方法:

1.       導入庫和函數/方法

2.       準備數據

3.       設置輸出模式(Notebook文檔、Web瀏覽器或服務器)

4.       創建圖表並選擇圖表的樣式(如果需要)

5.       可視化圖表

為了更好地理解這些步驟,讓我用下面的例子來演示一下:

圖表范例-1:使用Bokeh創建一個柱狀圖並在Web瀏覽器上顯示

我們將遵循上述列出的步驟來創建一個圖表:

交互式數據可視化,在Python中用Bokeh做到

交互式數據可視化,在Python中用Bokeh做到

在上面的圖表中,你可以看到頂部的工具選項(縮放、調整大小、重置、旋轉縮放),這些工具可以幫助你與圖表進行互動。同時,你也可以看到多個圖表選項(圖例、X軸名標註、Y軸名標註、坐標網格線、寬度、高度等)和各種圖表的范例。

圖表范例-2:在Notebook文檔中,利用箱線圖比較IRIS數據集中的萼片長度(sepal length)和花瓣長度(petal length)的分布情況

要創建這個可視化圖表,我首先要使用Sklearn庫導入IRIS數據集。然後,按照上述步驟在ipythonNotebook文檔中進行圖表可視化。

交互式數據可視化,在Python中用Bokeh做到
交互式數據可視化,在Python中用Bokeh做到

圖表范例-3:創建一個線圖到Bokeh服務器

在繪制可視化圖表到Bokeh服務器之前,你首先需要運行服務器。

如果你使用的是conda包,你可以在任何目錄下使用運行命令「bokeh-server」。如果不是,「python ./bokeh-server」通常也可以。

在Bokeh服務器上進行可視化繪圖有多個優點:

  • 圖表有更多的受眾

  • 可對大數據集進行交互式可視化

  • 可根據數據流自動更新圖表

  • 創建控制面板和應用程序

開始在Bokeh服務器上繪圖之前,我先運行了「bokeh-server」指令對其進行初始化,然後再運行用於可視化的相關指令。

交互式數據可視化,在Python中用Bokeh做到

交互式數據可視化,在Python中用Bokeh做到

交互式數據可視化,在Python中用Bokeh做到

繪圖

Plotting是一個中級接口,是以構建視覺符號為核心的接口。在這裡,你可以綜合各種視覺元素(點、圓、線、補丁和許多其它元素)和工具(懸停、縮放、保存、重置和其它工具)來創建可視化。

使用Bokeh的Plotting接口創建的圖表自帶一組默認的工具和視覺效果。繪圖可按照以下步驟進行:

1.    導入庫、方法或函數

2.    選擇輸出方式(Notebook文檔、Web瀏覽器、服務器)

3.    激活圖(類似matplotlib)

4.    執行後續的繪圖操作,這將影響已經生成的圖形。

5.    圖表可視化

為了更好地理解這些步驟,讓我舉例演示:

繪圖范例-1:在Notebook文檔中創建二維散點圖(正方形標記)

交互式數據可視化,在Python中用Bokeh做到

 交互式數據可視化,在Python中用Bokeh做到

同樣,你可以創建各種其它類型的圖:如線、角和圓弧、橢圓、圖像、補丁以及許多其它的圖。

繪圖范例-2:將兩種視覺元素合併在一張圖中

交互式數據可視化,在Python中用Bokeh做到
交互式數據可視化,在Python中用Bokeh做到 

 

繪圖范例-3:為上圖添加一個懸停工具和坐標軸標籤

交互式數據可視化,在Python中用Bokeh做到
交互式數據可視化,在Python中用Bokeh做到

繪圖范例-4:使用緯度和經度數據來繪制印度地圖

註:我已經有一個CSV格式的印度邊界的緯度和經度的多邊形數據。我將使用該數據來繪圖。

在這裡,我們將使用補丁繪圖,讓我們看看下面的命令:

 交互式數據可視化,在Python中用Bokeh做到
交互式數據可視化,在Python中用Bokeh做到

結語

在本文中,我們討論了用Bokeh創建可視化以及如何將可視化結果呈現在Notebook文檔、html文檔以及bokeh服務器上。我們還談到了如何使用繪圖接口創建個性化的可視化圖表,通過該功能,你可以將多種視覺元素結合到一起來展示數據信息。

原文:
http://www.analyticsvidhya.com/blog/2015/08/interactive-data-visualization-library-python-bokeh/?utm_source=feedburner&utm_medium=email&utm_campaign=Feed%3A+AnalyticsVidhya+%28Analytics+Vidhya%29

 

相關文章推薦,點擊圖片可閱讀

如何用Python在10分鐘內建立一個預測模型

交互式數據可視化,在Python中用Bokeh做到

[乾貨] 一個數據科學家的新年計劃

交互式數據可視化,在Python中用Bokeh做到


編譯者簡介
回復「志願者」,了解我們及如何加入我們

欄目主編:

交互式數據可視化,在Python中用Bokeh做到
欄目成員:

交互式數據可視化,在Python中用Bokeh做到
交互式數據可視化,在Python中用Bokeh做到
交互式數據可視化,在Python中用Bokeh做到

交互式數據可視化,在Python中用Bokeh做到

【限時乾貨下載】

交互式數據可視化,在Python中用Bokeh做到

點擊下圖,閱讀「2016大數據發展7大趨勢」

交互式數據可視化,在Python中用Bokeh做到

2016/1/31前
2015年12月乾貨文件打包下載,請點擊大數據文摘底部菜單:下載等–12月下載


大數據文摘精彩文章:
回復【金融】 看【金融與商業】專欄歷史期刊文章
回復【可視化】感受技術與藝術的完美結合
回復【安全】 關於泄密、黑客、攻防的新鮮案例
回復【算法】 既漲知識又有趣的人和事
回復【Google】 看其在大數據領域的舉措
回復【院士】 看眾多院士如何講大數據
回復【隱私】 看看在大數據時代還有多少隱私
回復【醫療】 查看醫療領域文章6篇
回復【徵信】 大數據徵信專題四篇
回復【大國】 「大數據國家檔案」之美國等12國
回復【體育】 大數據在網球、NBA等應用案例
回復【志願者】了解如何加入大數據文摘
長按指紋,即可關注「大數據文摘」
交互式數據可視化,在Python中用Bokeh做到
專注大數據,每日有分享

閱讀原文


關於作者:
數據使金融、互聯網、IT發生巨變又顛覆著醫療、農業、餐飲、房地產、交通、教育、製造乃至人類本身。旨在普及數據思維,傳播數據文化,我們為您精選各行業大數據相關案例、資訊,幫您緊跟科技前沿,手握數據思維、數據分析、數據挖掘、數據可視化等重磅乾貨

微信號:BigDataDigest