【问题标题】:Python Bokeh: Slider callback in ColumnDataSource not updatePython Bokeh:ColumnDataSource 中的滑块回调未更新
【发布时间】:2018-12-08 15:08:51
【问题描述】:

我的回调有问题,我得到了一切工作,除了当我更改滑块时数组更新时图形没有更新的部分。

import numpy as np

from bokeh.io import curdoc
from bokeh.layouts import row, widgetbox
from bokeh.models import ColumnDataSource, Slider
from bokeh.plotting import figure

data = {'x_values': [0,0,2,2,4,4],
        'y_values': [10,0,0,5,5,10]} #Seting up data

source = ColumnDataSource(data=data) # Map plot

plot = figure(title="Step Well",
              tools="save,wheel_zoom")

plot.line('x_values', 'y_values',source=source)

def update_data(attrname, old, new):
    Step = StepHeight.value

    x = [0,0,2,2,4,4]
    y = [10,0,0,Step,Step,10]
    source.data = ColumnDataSource(dict(x=x, y=y))
    source.on_change('value', update_data)

StepHeight = Slider(title="Step Height", 
                    value=4.0, 
                    start=2.0, end=6.0, step=0.2)
# Set up layouts and add to document
inputs = widgetbox(StepHeight)

layout = row(inputs, plot)

curdoc().title = "Sliders"
curdoc().add_root(layout)

【问题讨论】:

    标签: python python-requests bokeh


    【解决方案1】:

    您试图将 source.data 设为列数据源,但 source 应为列数据源。 Source.data 只是一个字典。我在您的代码中更改了一些内容,现在应该可以正常工作了。

    import numpy as np
    from bokeh.io import curdoc
    from bokeh.layouts import row, widgetbox
    from bokeh.models import ColumnDataSource, Slider
    from bokeh.plotting import figure
    
    data = {'x_values': [0,0,2,2,4,4],
            'y_values': [10,0,0,5,5,10]} #Seting up data
    
    source = ColumnDataSource(data=data) # Map plot
    
    plot = figure(title="Step Well",
                  tools="save,wheel_zoom")
    
    plot.line('x_values', 'y_values',source=source)
    
    def update_data(attrname, old, new):
        y = [10,0,0,new,new,10]
        source.data['y_values'] = y
    
    StepHeight = Slider(title="Step Height", 
                        value=4.0, 
                        start=2.0, end=6.0, step=0.2)
    
    StepHeight.on_change('value', update_data)
    
    # Set up layouts and add to document
    inputs = widgetbox(StepHeight)
    
    layout = row(inputs, plot)
    
    curdoc().title = "Sliders"
    curdoc().add_root(layout)
    

    【讨论】:

      猜你喜欢
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      相关资源
      最近更新 更多