python - 如何使用散景从回调中更新轴标签?
问题描述
关于如何从回调更新轴标签的任何线索?更改工具提示也是如此。此外,如果有更简单/更好的方式来编码绘图之间的交互,请告诉我。
这是这个最小的例子。
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))
解决方案
将此行添加到您的 JS 回调(适用于 Bokeh v1.4.0 - v2.1.1):
plot.toolbar.tools[4].tooltips = [[varName1, "@" + varName1], [varName2, "@" + varName2]]
“4”是您的 HoverTool 在工具栏中的索引
推荐阅读
- hibernate - 如何通过持久化 XML 开启 Hibernate Envers (ON/OFF)
- android - 如何将推送通知从 wordpress 发送到 android webview 应用程序?
- terminal - 在负载测试期间如何在终端中阅读报告
- java - 无法更改 Winium 驱动程序中的默认端口
- html - 使用pseduo元素的列背景
- python - 为什么声明的 Python 类的方法没有“self”且没有装饰器不会引发异常?
- sql-server - 在单个查询中插入和选择。ADODB 抛出“对象关闭时不允许操作”
- ajax - 使用关系表在 laravel 中填充基于文本框的选择下拉列表
- php - php中的jQuery ajax调用while循环只返回第一个id
- sqlite - 如何过滤两列中的行