使用下拉和回调更新Bokeh上的交互式图形。

问题描述 投票:0回答:1

我对Python很陌生,但一直在关注DataCamp的培训。我希望使用下拉菜单更新一个图形。

下拉菜单将从数据框架中选择一列,并在x轴上绘制该数据。

这就是我目前所做的。


df1 = pd.read_csv('C:/PStuff/dataA.txt')
source = ColumnDataSource(df1)

plot = figure()
plot.circle(x = 'col1', y = 'col5', source=source)

menu = Select(options=['col1', 'col2', 'col3'], value='col1', title='Distribution')

def callback(attr, old, new):
    if menu.value == 'col2':  x ='col2'
    elif menu.value == 'col3': x ='col3'
    else:                       x ='col1'
menu.on_change('value', callback)

layout = column(menu, plot)
curdoc().add_root(layout)

目前我在运行Bokeh服务时没有收到任何错误信息 目前只是什么都没有显示出来!任何帮助都将是非常感激的。

python html bokeh
1个回答
0
投票

xplot.circle() 参数中的值只存在于该调用中。所以,您的回调只是将一个值赋给一个 x 变量,什么都不做。

你可以更新源码本身。

# set the source to specific columns from df1 initially
source = ColumnDataSoruce(data={'x':df1['col1'],'y':df1['col5']}) 
plot.circle(x = 'x', y = 'y', source=source)
menu = Select(options=['col1', 'col2', 'col3'], value='col1', title='Distribution')
def callback(attr, old, new):
   source.data.update({'x':df1[new]})
© www.soinside.com 2019 - 2024. All rights reserved.