如何使用 ColumnDataSource 更新 Span (Bokeh)?
How to update Span (Bokeh) using ColumnDataSource?
我正在尝试使用 ColumnDataSource 更新 Span,但信息未传递到源。不幸的是,Span 没有参数“源”,那么有更好的方法吗?
我已经这样定义了我的来源、图形和线条:
m1_source = ColumnDataSource(data=dict(x1=[], y1=[]))
m1_spans = ColumnDataSource(data=dict(x1=[]))
p = figure(x_axis_type="datetime", title="", sizing_mode="fixed", height = 500, width = 1400)
p.line(x ="x1", y="y1", color = 'blue', source=m1_source)
然后我有一个 for 循环,理想情况下应该绘制多个跨度,每个 'i' 将是一个单独的时间戳:
for i in m1_spans.data['x1']:
p.add_layout(Span(location=i, dimension='height', line_color='red', line_dash='solid', line_width=1))
这取自我的 update() 函数:
m1_source.data = dict(
x1=machine_1_vals['mpTimestamp'],
y1=machine_1_vals['Value'])
m1_spans.data = dict( x1=ToolsDF.loc[ToolsDF['Value'] == float(vals['Tool_val'])]['Timestamp'])
我已经检查过了,m1_spans 成功 return 多个时间戳,所以错误不应该在这里。
我感到困惑的原因是因为我的 p.line 将成功更新,没有任何问题,但它确实有一个 source 参数,而 span 没有。
如果您能提供有关如何解决此问题的任何建议,我将不胜感激。
如果我应该提供更多信息,我深表歉意并可以根据需要进行更新,我只是尽量为您提供简短的信息。
谢谢。
Span
对象目前没有能力被 ColumnDataSource
“驱动”。每个 Span
只绘制一个跨度,由它自己指定 location
属性.
您需要在每个 Span
对象上单独更新 location
属性 才能更新它。或者,如果您绝对希望能够通过 CDS 驱动更新,您可以考虑使用 multi_line
、segment
或 ray
字形。这些都有不同的方式来配置它们的坐标,所以你必须看看哪种方式最适合你的用例。但它们都有一个权衡,那就是 none 具有 Span
支持的完整“无限范围”。
我正在尝试使用 ColumnDataSource 更新 Span,但信息未传递到源。不幸的是,Span 没有参数“源”,那么有更好的方法吗?
我已经这样定义了我的来源、图形和线条:
m1_source = ColumnDataSource(data=dict(x1=[], y1=[]))
m1_spans = ColumnDataSource(data=dict(x1=[]))
p = figure(x_axis_type="datetime", title="", sizing_mode="fixed", height = 500, width = 1400)
p.line(x ="x1", y="y1", color = 'blue', source=m1_source)
然后我有一个 for 循环,理想情况下应该绘制多个跨度,每个 'i' 将是一个单独的时间戳:
for i in m1_spans.data['x1']:
p.add_layout(Span(location=i, dimension='height', line_color='red', line_dash='solid', line_width=1))
这取自我的 update() 函数:
m1_source.data = dict(
x1=machine_1_vals['mpTimestamp'],
y1=machine_1_vals['Value'])
m1_spans.data = dict( x1=ToolsDF.loc[ToolsDF['Value'] == float(vals['Tool_val'])]['Timestamp'])
我已经检查过了,m1_spans 成功 return 多个时间戳,所以错误不应该在这里。
我感到困惑的原因是因为我的 p.line 将成功更新,没有任何问题,但它确实有一个 source 参数,而 span 没有。
如果您能提供有关如何解决此问题的任何建议,我将不胜感激。 如果我应该提供更多信息,我深表歉意并可以根据需要进行更新,我只是尽量为您提供简短的信息。
谢谢。
Span
对象目前没有能力被 ColumnDataSource
“驱动”。每个 Span
只绘制一个跨度,由它自己指定 location
属性.
您需要在每个 Span
对象上单独更新 location
属性 才能更新它。或者,如果您绝对希望能够通过 CDS 驱动更新,您可以考虑使用 multi_line
、segment
或 ray
字形。这些都有不同的方式来配置它们的坐标,所以你必须看看哪种方式最适合你的用例。但它们都有一个权衡,那就是 none 具有 Span
支持的完整“无限范围”。