1. 程式人生 > 實用技巧 >Python資料視覺化:繪相簿——Bokeh 應用講解

Python資料視覺化:繪相簿——Bokeh 應用講解

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理

以下文章來源於娜驛站 ,作者娜娜zhao

前言

雖然在Python中有matplotlib可以滿足我們大部分的繪圖需求,但是這種原生的基本繪圖確實顯得不那麼漂亮,當然可以通過一些設定使之看起來美觀,然而那樣一來就要花費不少的時間,好在強大的Python第三方庫中有一些現成的繪相簿,可以使得我們日常的繪圖顯得美觀又便捷,這篇文章就來介紹一種繪相簿——Bokeh。

Bokeh是用於現代Web瀏覽器的互動式視覺化庫,使用它可以進行快速互動式繪圖,令我們感覺更方便的是還有一個與pandas繫結的版本——Pandas-Bokeh,使用這個繫結版本,既可以利用強大的pandas庫,又可以呼叫Bokeh的強大繪圖能力。

安裝

熟悉Python第三方庫安裝的同學應該很容易對該包進行安裝:

pip install pandas_bokeh

我這裡安裝的是bokeh-2.2.2和pandas-bokeh-0.5版本。Python的版本是3.8.3

條形統計圖繪製

現在我們用一個小例子來說明條形統計圖如何繪製,比如我們繪製連續十年的某三種產品銷售量,為方便計,我們用numpy的隨機數來生成這些資料:


import numpy as np
import pandas as pd
import pandas_bokeh as pb
df = pd.DataFrame({
   '年份': np.arange(2010, 2020),
   '產品A': np.random.uniform(9000, 15000, 10),
   '產品B': np.random.uniform(9000, 15000, 10),
   '產品C': np.random.uniform(9000, 15000, 10),
}
)
df

上述程式碼中的np.random.uniform(9000,15000,10)的意思是在9000-15000中隨機選取10個數字,注意,從生成的結果來看,這些隨機選擇的數字可以是小數。

為了將圖形繪製在jupyter-lab的notebook中,我們需要呼叫以下程式碼:

pb.output_notebook()

從上述顯示資訊可以看出,Bokeh已經載入成功,下面我們就來繪製條形統計圖:

df.plot_bokeh(
   kind = 'bar',
   x = '年份',
   y = ['產品A', '產品B', '產品C'],
   xlabel = '產品數量',
   ylabel = '年度銷售量',
   title = '三種產品年度銷售統計圖'
)

繪製的圖形如下:

上述程式碼是不是比matplotlib更簡潔?繪製的圖形無論形狀還是著色是不是比後者更漂亮?下面我們來簡單說明一下plot_bokeh這個函式所帶的幾個引數:

  1. kind指的是我們要繪製的圖形型別,當前的pandas_bokeh支援這幾種圖形:line,point,step,scatter,bar,histogram,area,pie,map。
  2. x和y直接傳遞的是dataframe資料集中的key,即指定何者為橫軸資料,何者為縱軸資料。
  3. xlabel和ylabel是x軸和y軸的標籤。
  4. title是圖表的標題。

所以,只要配置好dataframe,即可以很容易繪製出我們想要的圖形。

一些高階引數

當然,這個庫也支援一些引數的高階用法,比如可以規定座標軸的範圍、關閉圖形的滑鼠縮放功能等等,比如將上述資料繪製成折線統計圖:

df.plot_bokeh.line(    
   x = '年份',
   y = ['產品A', '產品B', '產品C'],
   xlabel = '產品數量',
   ylabel = '年度銷售量',
   title = '三種產品年度銷售統計圖',
   figsize=(800, 500),
   ylim = (5000, 20000),
   zooming = False,
   panning=False,
)

繪製的圖形如下:

注意:df.plot_bokeh.line(...)相當於df.plot_bokeh(kind='line', ...),其中figsize用一對陣列定義了畫布的寬和高;xlim和ylim分別定義了x軸和y軸的範圍;zooming是滑鼠滾輪縮放的開關;而panning是平移開關,當關閉時,曲線不能移動。當然這些開關都可以通過圖形右側的工具欄快速切換。

將圖形輸出到HTML檔案

剛才我們設定將繪製的圖形直接輸出到jupyter-lab的notebook中,如果離開該環境,圖形還可以輸出成其它方式嗎?答案是肯定的,即Bokeh還可以將圖形輸出成HTML檔案進行儲存,但在使用這一功能之前,需要指定HTML檔名稱:

pb.output_file('mychart.html')

現在我們再來執行一下上述程式碼,看看要生成的條形統計圖是如何儲存成一個HTML檔案的:

df.plot_bokeh(
   kind = 'bar',
   x = '年份',
   y = ['產品A', '產品B', '產品C'],
   xlabel = '產品數量',
   ylabel = '年度銷售量',
   title = '三種產品年度銷售統計圖'
)

當我們執行上述程式碼時,瀏覽器立刻開啟一個頁面顯示生成的圖片,如下圖所示:

小結

本文演示了pandas_bokeh這個第三方庫的繪圖功能,關於pandas的問題在本公眾號前面有相應的幾篇文章進行了簡介,如果熟悉matplotlib的應該還對其中“中文”問題的設定有印象,但利用Bokeh,則不會存在這個問題。