本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理
以下文章來源于娜驛站 ,作者娜娜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這個函式所帶的幾個引數:
- kind指的是我們要繪制的圖形型別,當前的pandas_bokeh支持這幾種圖形:line, point, step, scatter, bar, histogram, area, pie, map,
- x和y直接傳遞的是dataframe資料集中的key,即指定何者為橫軸資料,何者為縱軸資料,
- xlabel和ylabel是x軸和y軸的標簽,
- 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,則不會存在這個問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/182738.html
標籤:Python
