试图用python中的bokeh绘制鼠标悬停交互图



我是bokeh的新手,正在尝试绘制图形。我有三个清单,比如

from bokeh.plotting import figure, show
x=[1,2,3,4,5,6,7,8,9,10,11]
y=[1,2,1,1,1,1,3,4,5,5,5]
c=[50,40,30,20,10,60,50,40,30,20,10]
p = figure(x_axis_type="datetime", title="Range", plot_height=350, plot_width=800)
p.xgrid.grid_line_color=None
p.ygrid.grid_line_alpha=0.5
p.xaxis.axis_label = 'Time'
p.yaxis.axis_label = 'Value'
p.line(x,y)
show(p)

我想要一种类似于阶跃函数图的时间序列,其中x轴是一个连续的时间序列(列表x(,y轴是事件(列表y(,即y轴应该只有到5为止的标记(如1,2,3,4,5(,当鼠标指针悬停在上面时,绘制的点应该显示存储在c.中的相应值

例如,当时间为x=1时,则y=1,并且c=50。

这样我就可以通过观察x轴上的人在什么时候(y轴上的5个位置中的1、2、3、4、5个(,并通过放置鼠标来知道当时的值(列表c(。

如果你想只在特定的点显示工具提示,我可以添加圆圈,并将它们设置为唯一的悬停渲染器,如下所示:

from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, HoverTool
x=[1,2,3,4,5,6,7,8,9,10,11]
y=[1,2,1,1,1,1,3,4,5,5,5]
c=[50,40,30,20,10,60,50,40,30,20,10]
source = ColumnDataSource({'x': x, 'y': y, 'c': c})
p = figure(x_axis_type="datetime", title="Range", plot_height=350, plot_width=800, tooltips = [('time', '@x'), ('place', '@y'), ('value','@c')])
p.xgrid.grid_line_color=None
p.ygrid.grid_line_alpha=0.5
p.xaxis.axis_label = 'Time'
p.yaxis.axis_label = 'Value'
lines = p.line('x','y', source=source)
circles = p.circle('x','y', source=source)
p.select_one(HoverTool).renderers = [circles]
show(p)

最新更新