python 散景 - 创建自定义平移按钮
python bokeh - create a custom pan button
刚开始做bokeh,很期待,想知道有没有办法实现如下:
我有一个过去 1 年的财务数据系列:
我想创建特殊的工具,使我能够:
- 一个特殊的缩放,在第一个月点击一次缩放
- 一个特殊的 zoom/pan,单击 1 次即可向前移动 1 个月,并将图表的高度调整为可见数据
是否可以在散景中实现?
我认为这意味着调整原始 zoom/pan 定义并使用它们创建新工具。
这是一个使用 taptool 的例子,对你有用吗?每次单击都会查看绘图区域的 10 个单位间隔。要调整数据图,您可以从源数据中找到最大和最小 y 值并更改 y 范围的结束和开始。
from bokeh.models import ColumnDataSource, BoxSelectTool,TapTool, HoverTool
from bokeh.plotting import figure
from bokeh.io import curdoc
source2 = ColumnDataSource(data=dict(x=[0,100],y=[0,100]))
taptool = TapTool()
p = figure(plot_width=400,
plot_height=400,
tools=[taptool],
title="Select Below")
p.circle(x='x',y='y',source=source2)
""" initial x-range is 0, 100"""
p.x_range.start = 0
p.x_range.end = 100
def tool_events_callback(attr, old, new):
if(p.x_range.end == 100):
p.x_range.end = p.x_range.start + 10
p.x_range.start = p.x_range.end - 10
else:
p.x_range.start = p.x_range.start + 10
p.x_range.end = p.x_range.start + 10
p.tool_events.on_change('geometries', tool_events_callback)
p.add_tools(BoxSelectTool(), HoverTool())
curdoc().add_root(p)
刚开始做bokeh,很期待,想知道有没有办法实现如下:
我有一个过去 1 年的财务数据系列: 我想创建特殊的工具,使我能够: - 一个特殊的缩放,在第一个月点击一次缩放 - 一个特殊的 zoom/pan,单击 1 次即可向前移动 1 个月,并将图表的高度调整为可见数据
是否可以在散景中实现? 我认为这意味着调整原始 zoom/pan 定义并使用它们创建新工具。
这是一个使用 taptool 的例子,对你有用吗?每次单击都会查看绘图区域的 10 个单位间隔。要调整数据图,您可以从源数据中找到最大和最小 y 值并更改 y 范围的结束和开始。
from bokeh.models import ColumnDataSource, BoxSelectTool,TapTool, HoverTool
from bokeh.plotting import figure
from bokeh.io import curdoc
source2 = ColumnDataSource(data=dict(x=[0,100],y=[0,100]))
taptool = TapTool()
p = figure(plot_width=400,
plot_height=400,
tools=[taptool],
title="Select Below")
p.circle(x='x',y='y',source=source2)
""" initial x-range is 0, 100"""
p.x_range.start = 0
p.x_range.end = 100
def tool_events_callback(attr, old, new):
if(p.x_range.end == 100):
p.x_range.end = p.x_range.start + 10
p.x_range.start = p.x_range.end - 10
else:
p.x_range.start = p.x_range.start + 10
p.x_range.end = p.x_range.start + 10
p.tool_events.on_change('geometries', tool_events_callback)
p.add_tools(BoxSelectTool(), HoverTool())
curdoc().add_root(p)