溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何利用Bokeh進行數據可視化

發布時間:2022-08-08 14:26:50 來源:億速云 閱讀:140 作者:iii 欄目:開發技術

Python如何利用Bokeh進行數據可視化

引言

數據可視化是數據分析和數據科學中不可或缺的一部分。通過可視化,我們可以更直觀地理解數據的分布、趨勢和關系。Python作為一種強大的編程語言,提供了多種數據可視化工具,其中Bokeh是一個功能強大且靈活的庫,特別適合創建交互式的數據可視化。

本文將詳細介紹如何使用Bokeh進行數據可視化,包括安裝、基本繪圖、交互式圖表的創建、以及如何將圖表嵌入到網頁中。

1. Bokeh簡介

Bokeh是一個用于創建交互式數據可視化的Python庫。它支持多種圖表類型,包括線圖、柱狀圖、散點圖、熱圖等。Bokeh的一個顯著特點是它能夠生成可以在網頁中直接使用的交互式圖表,用戶可以通過鼠標和鍵盤與圖表進行交互。

2. 安裝Bokeh

在開始使用Bokeh之前,首先需要安裝它??梢酝ㄟ^pip命令輕松安裝Bokeh:

pip install bokeh

安裝完成后,可以通過以下命令驗證安裝是否成功:

import bokeh
print(bokeh.__version__)

3. 基本繪圖

3.1 創建簡單的線圖

首先,我們從一個簡單的線圖開始。假設我們有一組數據,表示某公司過去幾年的銷售額。

from bokeh.plotting import figure, show

# 數據
years = [2015, 2016, 2017, 2018, 2019, 2020]
sales = [100, 120, 150, 180, 200, 220]

# 創建圖表
p = figure(title="Sales Over Years", x_axis_label='Year', y_axis_label='Sales')

# 添加線圖
p.line(years, sales, legend_label="Sales", line_width=2)

# 顯示圖表
show(p)

在這個例子中,我們首先導入了figureshow函數。figure用于創建一個圖表對象,show用于顯示圖表。然后,我們定義了一組數據,并使用line方法繪制了一條線圖。

3.2 創建柱狀圖

接下來,我們創建一個柱狀圖,展示不同產品的銷售額。

from bokeh.plotting import figure, show

# 數據
products = ['Product A', 'Product B', 'Product C', 'Product D']
sales = [50, 80, 120, 90]

# 創建圖表
p = figure(x_range=products, title="Sales by Product", x_axis_label='Product', y_axis_label='Sales')

# 添加柱狀圖
p.vbar(x=products, top=sales, width=0.5)

# 顯示圖表
show(p)

在這個例子中,我們使用了vbar方法創建了一個垂直柱狀圖。x_range參數用于指定x軸的范圍,top參數用于指定柱子的高度。

4. 交互式圖表

Bokeh的一個強大功能是它能夠創建交互式圖表。用戶可以通過鼠標和鍵盤與圖表進行交互,例如縮放、平移、懸停顯示數據等。

4.1 添加懸停工具

我們可以通過添加懸停工具,使用戶在鼠標懸停在數據點上時顯示詳細信息。

from bokeh.plotting import figure, show
from bokeh.models import HoverTool

# 數據
years = [2015, 2016, 2017, 2018, 2019, 2020]
sales = [100, 120, 150, 180, 200, 220]

# 創建圖表
p = figure(title="Sales Over Years", x_axis_label='Year', y_axis_label='Sales')

# 添加線圖
p.line(years, sales, legend_label="Sales", line_width=2)

# 添加懸停工具
hover = HoverTool()
hover.tooltips = [("Year", "@x"), ("Sales", "@y")]
p.add_tools(hover)

# 顯示圖表
show(p)

在這個例子中,我們導入了HoverTool類,并將其添加到圖表中。tooltips參數用于指定懸停時顯示的信息。

4.2 添加縮放和平移工具

Bokeh還提供了縮放和平移工具,用戶可以通過這些工具對圖表進行縮放和平移操作。

from bokeh.plotting import figure, show
from bokeh.models import WheelZoomTool, PanTool

# 數據
years = [2015, 2016, 2017, 2018, 2019, 2020]
sales = [100, 120, 150, 180, 200, 220]

# 創建圖表
p = figure(title="Sales Over Years", x_axis_label='Year', y_axis_label='Sales')

# 添加線圖
p.line(years, sales, legend_label="Sales", line_width=2)

# 添加縮放和平移工具
p.add_tools(WheelZoomTool(), PanTool())

# 顯示圖表
show(p)

在這個例子中,我們導入了WheelZoomToolPanTool類,并將它們添加到圖表中。

5. 將圖表嵌入到網頁中

Bokeh的一個強大功能是它能夠將圖表嵌入到網頁中。我們可以通過Bokeh的output_file函數將圖表保存為HTML文件,然后在網頁中顯示。

5.1 保存為HTML文件

from bokeh.plotting import figure, output_file, show

# 數據
years = [2015, 2016, 2017, 2018, 2019, 2020]
sales = [100, 120, 150, 180, 200, 220]

# 創建圖表
p = figure(title="Sales Over Years", x_axis_label='Year', y_axis_label='Sales')

# 添加線圖
p.line(years, sales, legend_label="Sales", line_width=2)

# 保存為HTML文件
output_file("sales_over_years.html")

# 顯示圖表
show(p)

在這個例子中,我們使用了output_file函數將圖表保存為HTML文件。生成的HTML文件可以在瀏覽器中打開,顯示交互式圖表。

5.2 嵌入到網頁中

我們還可以將Bokeh圖表嵌入到現有的網頁中。Bokeh提供了components函數,可以將圖表分解為HTML和JavaScript代碼,然后將其嵌入到網頁中。

from bokeh.plotting import figure
from bokeh.embed import components

# 數據
years = [2015, 2016, 2017, 2018, 2019, 2020]
sales = [100, 120, 150, 180, 200, 220]

# 創建圖表
p = figure(title="Sales Over Years", x_axis_label='Year', y_axis_label='Sales')

# 添加線圖
p.line(years, sales, legend_label="Sales", line_width=2)

# 獲取HTML和JavaScript代碼
script, div = components(p)

# 輸出HTML代碼
print(div)
print(script)

在這個例子中,我們使用了components函數將圖表分解為HTML和JavaScript代碼。然后,我們可以將這些代碼嵌入到現有的網頁中。

6. 高級功能

6.1 多圖布局

Bokeh支持將多個圖表組合在一起,形成一個復雜的布局。我們可以使用gridplot函數將多個圖表排列在一個網格中。

from bokeh.plotting import figure, show
from bokeh.layouts import gridplot

# 數據
years = [2015, 2016, 2017, 2018, 2019, 2020]
sales1 = [100, 120, 150, 180, 200, 220]
sales2 = [80, 90, 110, 130, 150, 170]

# 創建第一個圖表
p1 = figure(title="Sales Over Years 1", x_axis_label='Year', y_axis_label='Sales')
p1.line(years, sales1, legend_label="Sales 1", line_width=2)

# 創建第二個圖表
p2 = figure(title="Sales Over Years 2", x_axis_label='Year', y_axis_label='Sales')
p2.line(years, sales2, legend_label="Sales 2", line_width=2)

# 將圖表排列在一個網格中
grid = gridplot([[p1, p2]])

# 顯示圖表
show(grid)

在這個例子中,我們使用了gridplot函數將兩個圖表排列在一個網格中。

6.2 數據流更新

Bokeh還支持實時數據流更新。我們可以使用ColumnDataSource類來動態更新圖表中的數據。

from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource
from bokeh.io import curdoc
from random import random

# 創建數據源
source = ColumnDataSource(data=dict(x=[], y=[]))

# 創建圖表
p = figure(title="Real-time Data", x_axis_label='Time', y_axis_label='Value')
p.line(x='x', y='y', source=source, line_width=2)

# 更新數據
def update():
    new_data = dict(x=[source.data['x'][-1] + 1 if source.data['x'] else 0], y=[random() * 100])
    source.stream(new_data, rollover=20)

# 添加定時器
curdoc().add_periodic_callback(update, 1000)

# 顯示圖表
show(p)

在這個例子中,我們使用了ColumnDataSource類來動態更新圖表中的數據。stream方法用于向數據源中添加新數據,rollover參數用于限制數據源中的數據量。

7. 結論

Bokeh是一個功能強大且靈活的Python庫,特別適合創建交互式的數據可視化。通過本文的介紹,我們了解了如何安裝Bokeh、創建基本圖表、添加交互式工具、將圖表嵌入到網頁中,以及如何使用Bokeh的高級功能。

無論是簡單的線圖、柱狀圖,還是復雜的多圖布局和實時數據流更新,Bokeh都能輕松應對。希望本文能幫助你更好地理解和使用Bokeh進行數據可視化。

參考文獻

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女