【问题标题】:How to update axis labels from a callback with bokeh?如何使用散景从回调中更新轴标签?
【发布时间】:2020-09-28 14:06:08
【问题描述】:

关于如何从回调中更新轴标签的任何线索? 更改工具提示也是如此。 另外,如果有更简单/更好的方式来编写绘图之间的交互,请告诉我。

这是这个最小的例子。

values = list('ABCDFG')

df = pd.DataFrame(np.random.randint(0,100,size=(30, 6)), columns=values)

varName1 = 'A'
varName2 = 'B'

df['x'] = df[varName1]
df['y'] = df[varName2]

source = ColumnDataSource(df)

p0 = figure(tools='pan, wheel_zoom, box_select, lasso_select', plot_width=400, plot_height=400, 
            active_scroll="wheel_zoom",
            x_axis_label=varName1, y_axis_label=varName2,
            tooltips=[ (varName1, "@" + varName1),
                       (varName2, "@" + varName2)
                     ],
            title= varName1 + " vs " + varName2)

circles = p0.circle('x', 'y', source=source,
                    size=15, line_color="navy", fill_color="navy", fill_alpha=0.3)

select1 = Select(title="Variable 1:", value=varName1, width=100, options=values)
select2 = Select(title="Variable 2:", value=varName2, width=100, options=values)

changeVariables = CustomJS(args=dict(plot=p0, source=source, select1=select1, select2=select2, ax1=p0.xaxis, ax2=p0.yaxis), code="""
    var varName1 = select1.value;
    var varName2 = select2.value;
    plot.title.text = varName1 + " vs " + varName2;
    ax1[0].axis_label = varName1;
    ax2[0].axis_label = varName2; 
    source.data['x'] = source.data[varName1];
    source.data['y'] = source.data[varName2];
    source.change.emit();
""")

select1.js_on_change("value", changeVariables)
select2.js_on_change("value", changeVariables)

show(row(p0, select1, select2))

【问题讨论】:

  • 我已经简化了代码,但我仍然没有弄清楚如何从回调中更改工具提示以显示变量名称。

标签: python callback bokeh


【解决方案1】:

将此行添加到您的 JS 回调中(适用于 Bokeh v1.4.0 - v2.1.1):

plot.toolbar.tools[4].tooltips = [[varName1, "@" + varName1], [varName2, "@" + varName2]]

"4" 是您的 HoverTool 在工具栏中的索引

【讨论】:

  • 一个错字:[[varName1, "@" + varName1], [varName2, "@" + varName2]] 但无论如何,工具提示仍然显示 A,B
  • 查看更新信息:我测试了 Bokeh v2.1.1 的代码
  • 不适用于最新的 2.2.3 你能升级吗?降级是相当危险的。
  • 由于错误,它在 2.2.3 中无法使用。您需要降级或等待新版本
猜你喜欢
  • 2019-03-07
  • 2022-06-21
  • 1970-01-01
  • 1970-01-01
  • 2017-07-10
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
相关资源
最近更新 更多