如何使用带有条形图边框的tap工具

2024-05-23 16:33:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用带条形图的bokeh tap工具时,我需要获取所选条形图的id。如果不使用customJS,如何获取每个条形图的id 代码正在使用bokeh服务器运行

source = ColumnDataSource(data=df)

p = figure(x_range=source.data['month'], plot_height=600, toolbar_location=None, tools="tap,hover", title="month analysis")

p.vbar(x='month', top='count', width=0.5, source=source, legend="month",
       line_color='white', fill_color=factor_cmap('month', palette=Spectral6, factors=df['month']))
hover = HoverTool(tooltips=[("count", "@count")])


p.legend.orientation = "horizontal"
p.legend.location = "top_right"


taptool = p.select(type=TapTool)


curdoc().add_root(row( p, width=800))

Tags: idsourcedfdatatopcountbokehlocation
1条回答
网友
1楼 · 发布于 2024-05-23 16:33:34

这应该行得通。可以在source.selected.index中找到选定图示符的ID

#!/usr/bin/python3
import pandas as pd
from bokeh.plotting import figure, show, curdoc
from bokeh.io import output_file
from bokeh.models import ColumnDataSource, HoverTool, TapTool
from bokeh.transform import factor_cmap
from bokeh.palettes import Spectral6
from bokeh.layouts import row
from bokeh.events import Tap

df = pd.read_csv('data.csv')
df['count'] = df['count'].astype(dtype='int32')

source = ColumnDataSource(data=df)

p = figure(x_range=source.data['month'], plot_height=600, toolbar_location=None, tools="tap,hover", title="month analysis")

p.vbar(x='month', top='count', width=0.5, source=source, legend="month",
       line_color='white', fill_color=factor_cmap('month', palette=Spectral6, factors=df['month']))
hover = HoverTool(tooltips=[("count", "@count")])


p.legend.orientation = "horizontal"
p.legend.location = "top_right"


taptool = p.select(type=TapTool)

def callback(event):
    selected = source.selected.indices
    print(selected)

p.on_event(Tap, callback)


curdoc().add_root(row( p, width=800))

相关问题 更多 >