# hovertool `HoverTool` 是 `Bokeh` 庫中的一個工具,它可以在滑鼠懸停在圖上時顯示數據。當滑鼠指針放在圖表的特定部分(比如散點圖的點或者線圖中的線的時候),該工具會顯示與該部分相關的附加信息。 一般配套使用的是`from bokeh.plotting import fi ...
hovertool
HoverTool
是 Bokeh
庫中的一個工具,它可以在滑鼠懸停在圖上時顯示數據。當滑鼠指針放在圖表的特定部分(比如散點圖的點或者線圖中的線的時候),該工具會顯示與該部分相關的附加信息。
一般配套使用的是from bokeh.plotting import figure, show
在Python中,plotting
通常指的是數據可視化,即將數據以圖表的形式展現出來。
而 bokeh.plotting
是 Bokeh 庫中的一個模塊,它提供了構建複雜統計圖像的一種簡單且高效的方法。這個模塊包含了很多函數,例如 figure()
,來創建新的 Figure 對象;show()
和 save()
,用於展示和保存圖表等。
from bokeh.plotting import figure, show
# 創建一個新圖表
p = figure(width=400, height=400)
# 添加一個圓形散點圖
p.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)
# 顯示結果
show(p)
現在結合一個python內置的機器學習數據集iris
來進行一個描繪。iris
數據集是一個經典的機器學習數據集,它包含了三種鳶尾花(setosa、versicolor和virginica)的四個特征(sepal length、sepal width、petal length 和 petal width)的測量值。這個數據集通常用於分類、數據可視化、數據清洗等機器學習任務的示例。
Bokeh 庫提供了一系列內置的樣本數據集以便於用戶進行數據可視化的實踐和學習,iris
就是其中之一。你可以直接使用這些數據集,而無需自己去收集和整理數據。
HoverTool()
函數創建 Hover 工具,用於在滑鼠懸停在數據點上時顯示數據。然後,我們將HoverTool
對象的tooltips
屬性設置為要顯示的文本,將HoverTool
對象的renderers
參數設置為將渲染 Hover 工具的scatter
對象。
# 導入需要的模塊
from bokeh.plotting import figure, show, output_file
from bokeh.models import HoverTool, ColumnDataSource
from bokeh.sampledata.iris import flowers
# 指定輸出html文件名
output_file("iris.html")
# 為不同種類的花設置顏色
color_map = {'setosa': 'red', 'versicolor': 'green', 'virginica': 'blue'}
flowers['color'] = [color_map[x] for x in flowers['species']]
# 創建ColumnDataSource對象,這樣我們可以在HoverTool中引用列名
source = ColumnDataSource(flowers)
# 添加工具提示(hover tool)
hover = HoverTool(tooltips=[
("Species", "@species"),
("Sepal width", "@sepal_width"),
("Sepal length", "@sepal_length"),
("Petal width", "@petal_width"),
("Petal length", "@petal_length"),
])
# 創建一個新的繪圖對象,並添加工具提示
p = figure(title = "Iris Morphology", tools=[hover, "pan,wheel_zoom,xbox_select,reset"])
# 繪製散點圖
p.circle('petal_length', 'petal_width', source=source,
color='color', legend_group='species', fill_alpha=0.2, size=10)
# 顯示繪圖
show(p)
在Bokeh中,@
符號用於引用ColumnDataSource
對象中的列。
在我們的例子中,"@species"
表示從名為"species"
的列中獲取數據。同樣,"@sepal_width"
、"@sepal_length"
、"@petal_width"
和"@petal_length"
分別表示引用對應的列。
當您將滑鼠懸停在圖上的某個點時,HoverTool工具會根據這些引用從數據源中提取對應的值,併在工具提示框中顯示出來。
所以,在這裡,"@species"
等都是指向source
(一個ColumnDataSource
對象)中對應欄位的引用。
在Bokeh中,tools
參數用於指定要添加到圖形中的工具。這些工具可以幫助用戶交互地查看和探索數據。在我們的例子中,tools
參數包括以下幾項:
hover
: 這是一個HoverTool實例,當滑鼠懸停在圖上的某個點時,它會顯示該點的詳細信息。在我們的例子中,這些信息包括花的種類(species)和各部分的尺寸(sepal and petal width/length)。"pan"
: 這個工具允許用戶通過點擊並拖動來平移(即改變視角的位置)圖形。"wheel_zoom"
: 這個工具允許用戶通過滾動滑鼠滾輪來放大或縮小圖形。"xbox_select"
: 這個工具允許用戶通過拖拽一個矩形框來選擇圖形中的多個點。選中的點會被高亮顯示。"reset"
: 這個工具允許用戶重置圖形的視角和任何高亮的選中狀態,恢復到初始狀態。
以上這些工具都將被添加到圖形的工具欄中,用戶可以在圖形上方直接看到並使用它們。
Bokeh提供了許多內置的工具以增強圖形的交互性。以下是一些常見的可用工具:
"box_select"
: 使用矩形框選中數據點。"xbox_select"
和"ybox_select"
: 在x軸或y軸方向上使用矩形框選擇數據點。"crosshair"
: 在滑鼠懸停位置顯示十字線。"lasso_select"
: 用自由繪製的套索形狀選擇數據點。"poly_select"
: 用多邊形選取數據點。"tap"
: 單擊選擇數據點。"wheel_zoom"
或"xwheel_zoom"
和"ywheel_zoom"
: 使用滑鼠滾輪在所有軸、x軸或y軸方向進行縮放。"box_zoom"
或"xbox_zoom"
和"ybox_zoom"
: 用拖動的矩形框來定義縮放範圍。"undo"
和"redo"
: 撤銷/重做工具欄動作。"reset"
: 重置視圖到初始狀態。"save"
: 保存圖像為PNG格式。"zoom_in"
和"zoom_out"
: 縮放工具,可以針對所有軸、x軸或y軸。你可以將這些工具名稱字元串添加到
tools
參數列表中,以將它們添加到圖形的工具欄。下麵是一個例子:python複製代碼p = figure(tools="pan,wheel_zoom,box_select,crosshair,reset")
此外,還可以創建自定義的HoverTool或其他工具實例,並將其添加到工具欄中。例如:
python複製代碼hover = HoverTool(tooltips=[("Species", "@species")]) p = figure(tools=[hover, "pan,wheel_zoom,reset"])
在這個例子中,當滑鼠懸停在數據點上時,會顯示該點的"Species"值。
本文來自博客園,作者:ivanlee717,轉載請註明原文鏈接:https://www.cnblogs.com/ivanlee717/p/17505580.html