如何动态更改散景图线段线宽

How to change Bokeh figure segment line width dynamically

我有一个包含片段的图形:

p = figure(height=500, tools="pan,wheel_zoom,box_zoom,reset", x_axis_type='datetime', y_axis_location="right")

high_low_segment = p.segment(x0='time', y0='low', x1='time', y1='high', line_width=1, color='black', source=source)

(这是来自OHLC example

我想知道如何动态更改片段的 line_width - 即当 x 比例变化时(捕获 RangesUpdate 事件) - 以相应地缩放到缩放级别。

我是散景的新手,所以我不确定是否可以直接在 Python 中使用,如果我必须连接一些 JS,或者这种方式是不可能的。 也许我应该完全重写我的数字或删除该部分并添加一个新的?

环境:

事实上,分段是实现可缩放大小矩形的错误选择。 使用具有 data 高度和宽度单位的 Rect glyph 开箱即用。

p.rect(x='time',
       y='high_low_y',
       fill_color='black',
       height='high_low_height',
       width=20000,
       line_width=0,
       angle=0,
       height_units='data',
       width_units='data',
       source=source
       )
p.rect(x='time',
       y='open_close_y',
       fill_color='open_close_color',
       height='open_close_height',
       width=60000,
       line_width=0,
       line_color='black',
       angle=0,
       height_units='data',
       width_units='data',
       source=source
       )

通过 js_on_change 或 on_change 使用一些小部件。 例如:滑块

slider = Slider(start=0, end=10, value=1, step=1, title="line width")
spinner.js_link('value', high_low_segment.glyph, 'line_width')

或 on_change

def functionname(attr, old, new):
    high_low_segment.glyph.line_width = slider.value

slider = Slider(start=0, end=10, value=1, step=1, title="line width")
spinner.on_change('value', functionname)