gpt4 book ai didi

python - Bokeh ,只能通过回调更新列一次

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:34 24 4
gpt4 key购买 nike

使用我在 this 上找到的一些代码问题,我设法更新了我正在制作的图表的列。问题是,我只被允许进行一次更新,之后就不再起作用了。执行引用问题中的代码时会发生同样的问题。为了方便起见,我将在此处发布一个片段:

import bokeh
import bokeh.plotting
p = bokeh.plotting.figure(x_range=(0,4), y_range=(0,4), plot_height=200 )
csource = bokeh.models.ColumnDataSource(data=dict(
x=[1,2,3],
y=[1,2,1],
colors1=["#ff0000","#00ff00","#0000ff"],
colors2=["#ff00ff","#ffff00","#00ffff"]))
cir = p.circle(x="x",y="y",fill_color="colors1",line_color="colors1",
size=20,source=csource)
cb_cselect = bokeh.models.CustomJS(args=dict(cir=cir,csource=csource), code ="""
var selected_color = cb_obj.value;
cir.glyph.line_color.field = selected_color;
cir.glyph.fill_color.field = selected_color;
csource.trigger("change")
""")
color_select = bokeh.models.Select(title="Select colors", value="colors1",
options = ["colors1","colors2"], callback = cb_cselect)
layout = bokeh.layouts.gridplot([[p],[color_select]])
bokeh.io.output_file("output.html")
bokeh.io.show(layout)

基本上,我运行代码,html 文件在我的浏览器中打开,我通过下拉菜单更新,然后在任何更改生效之前单击重置。之后,除非刷新浏览器,否则无法进行更多更改。其他用户似乎没有遇到此问题,所以我很困惑为什么会这样。另外,我很抱歉,我会简单地评论这个问题,但我还没有必要的声誉。

最佳答案

BokehJS 中信号事件的语法 changed some time back .此外,它是您要更改的字形,因此您应该发出 change 信号。这是有效的回调版本:

cb_cselect = bokeh.models.CustomJS(args=dict(cir=cir,csource=csource), code ="""
var selected_color = cb_obj.value;
cir.glyph.line_color.field = selected_color;
cir.glyph.fill_color.field = selected_color;
cir.glyph.change.emit()
""")

关于python - Bokeh ,只能通过回调更新列一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48451710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com