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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/555999.html
標籤:Python
上一篇:【numpy基礎】--聚合計算
下一篇:返回列表