【问题标题】:Bokeh plot won't update散景图不会更新
【发布时间】:2017-03-03 20:50:59
【问题描述】:

我是 Bokeh 的新手,想知道是否有人可以帮助告诉我为什么我的情节没有更新?代码可以在这里找到:

pastebin.com/rn36b3aY

它只是应该使用函数“get_dataset”获取一些数据的代码,绘制条形图,然后让我使用下拉框和滑块更新绘图。谁能告诉我为什么剧情没有更新?如果有帮助,我可以提供数据。谢谢!

【问题讨论】:

  • 你想如何运行它? Bokeh 服务器应用程序必须使用 bokeh 命令运行,例如bokeh serve --show app.py如果你已经这样做了,你已经尝试过调试什么?
  • 嗨,是的,我一直在使用 bokeh serve --show app.py。我在 pastebin.com/rn36b3aY 上放了一个新的、更易于阅读的版本。更新仍然无法正常工作。看起来这是由于 x=factors on like 57. 数据框“asdata”有一个分类列(第一列)和一个数值列(第二列)。数字列似乎正在更新,但不是分类列。例如,如果我将第 57 行切换到 plot.vbar(x='y', width=0.5, bottom=0, top='y', source=source),则绘图会正确更新('y' 是数值列数据帧)。

标签: python bokeh


【解决方案1】:

您能否发布带有数据的程序的简化版本?

我怀疑您的绘图可能没有更新,因为在您的回调函数中,您使用 dataset_select.value 和 samples_slider.value 来更新数据。但这些包含更改滑块/选择之前的值。您应该使用新参数。

看看这是否有效:

def update_select_samples_or_dataset(attrname, old, new):
    global  X, Y
    dataset = new
    n_samples = int(samples_slider.value)

    asdata = get_dataset(dataset, n_samples)
    X = asdata[['aspects','importance']].as_matrix()
    source.data = dict(x=X[:,0], y=X[:,1])

def update_slider_samples_or_dataset(attrname, old, new):
    global  X, Y
    dataset = dataset_select.value
    n_samples = int(new)

    asdata = get_dataset(dataset, n_samples)
    X = asdata[['aspects','importance']].as_matrix()
    source.data = dict(x=X[:,0], y=X[:,1])

dataset_select.on_change('value', update_select_samples_or_dataset)
samples_slider.on_change('value', update_slider_samples_or_dataset)

【讨论】:

  • 您好,感谢您的回复!尝试您的解决方案后,该图似乎仍未正确更新。这是代码的更新的、稍微精简的版本:pastebin.com/MLAigEG6 可以在此处找到两个输入数据框:github.com/degravek/bdata 滑块默认设置为 15(绘制了 30 个总值)。如果滑块移动,则绘图的轴由于某种原因不会更新。例如,如果滑块设置为 2,则应该只显示 2 个条,并且轴应该相应地调整。非常感谢您的观看。
  • 您可能必须在回调函数中使用命令 plot.x_range = ... 手动更新轴。
  • 我也试过了,但它似乎不起作用。您有机会查看数据吗?还是被难住了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
相关资源
最近更新 更多