Python 与bokeh交互突出显示时间序列的特定范围

Python 与bokeh交互突出显示时间序列的特定范围,python,bokeh,jscript,Python,Bokeh,Jscript,我有一个简单的时间序列图 在时间序列图的顶部,我需要一个突出显示特定范围的图层。我想到了字形,如下所示: fig.quad(top=[10], bottom=[0], left=[0], right=[100], color="red", fill_alpha = 0.2) 现在,用户应该能够添加/删除此类图示符,并调整其左和右参数(最好通过拖动/移动左右边框)。bottom和top参数不重要,应分别为-Inf和Inf。然后,bokeh服务器应该保存这些调整 我想到了哪个可以使用矩形图示符,但

我有一个简单的时间序列图

在时间序列图的顶部,我需要一个突出显示特定范围的图层。我想到了字形,如下所示:

fig.quad(top=[10], bottom=[0], left=[0], right=[100], color="red", fill_alpha = 0.2)
现在,用户应该能够添加/删除此类图示符,并调整其
参数(最好通过拖动/移动左右边框)。
bottom
top
参数不重要,应分别为
-Inf
Inf
。然后,bokeh服务器应该保存这些调整

我想到了哪个可以使用矩形图示符,但我错过的功能是编辑
left
right
参数。(我知道我可以删除和添加glyph来更改左/右参数,但这不是一个选项,因为需要放大和调整左/右参数)

有没有交互调整左右参数的方法?或者可能是一种完全不同的方法来实现突出显示特定范围


PS我还注意到,
BoxEditTool
在较大的时间序列上非常慢/无响应。

0.13版本引入了
RangeTool

import numpy as np

from bokeh.io import show
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, RangeTool
from bokeh.plotting import figure
from bokeh.sampledata.stocks import AAPL

dates = np.array(AAPL['date'], dtype=np.datetime64)
source = ColumnDataSource(data=dict(date=dates, close=AAPL['adj_close']))

p = figure(plot_height=300, plot_width=800, tools="", toolbar_location=None,
           x_axis_type="datetime", x_range=(dates[1500], dates[2500]))

p.line('date', 'close', source=source)
p.yaxis.axis_label = 'Price'

select = figure(plot_height=150, plot_width=800, y_range=p.y_range,
                x_axis_type="datetime", y_axis_type=None,
                tools="", toolbar_location=None)

range_rool = RangeTool(x_range=p.x_range)
range_rool.overlay.fill_color = "navy"
range_rool.overlay.fill_alpha = 0.2

select.line('date', 'close', source=source)
select.ygrid.grid_line_color = None
select.add_tools(range_rool)
select.toolbar.active_multi = range_rool

show(column(p, select))

确实很有趣,谢谢您的演示。我目前正在尝试使用它,我真的看不到添加/删除范围的方法,也看不到将它们链接到
ColumnDataSource
。我错过什么了吗?