在 Altair / Vega 中,有没有办法在点击时 运行 任意 Javascript 代码?
In Altair / Vega, is there a way to run arbitrary Javascript code on click?
我想让我用 Altair 创建的可视化效果可以点击,并在我点击图表的特定区域时执行一个动作。具体来说,我想在单击图表的某些部分时滚动到文本框中的某些点。有没有办法做到这一点?
是的,有点像:Vega(呈现 Altair/Vega-Lite 图表的库)有一个定义明确的信号 API,您可以在此处阅读:https://vega.github.io/vega/docs/api/view/#signals。这允许您为通过与图表交互生成的信号定义自定义 javascript 回调。
但是,在 Vega-Lite 或 Altair 中没有高级接口,因此要使用它,您必须直接使用 Javascript 中的视图 API呈现图表。
如果您想从 Altair 执行此操作,最好的方法可能是:
- 定义您的 Altair 图表,并使用
chart.to_json()
将其导出到 JSON
- 使用 vega-embed
编写单独的 HTML/Javascript 以提取此 JSON 并呈现图表
- 在此呈现脚本中,利用 View API 将自定义 Javascript 回调附加到图表生成的信号。
我想让我用 Altair 创建的可视化效果可以点击,并在我点击图表的特定区域时执行一个动作。具体来说,我想在单击图表的某些部分时滚动到文本框中的某些点。有没有办法做到这一点?
是的,有点像:Vega(呈现 Altair/Vega-Lite 图表的库)有一个定义明确的信号 API,您可以在此处阅读:https://vega.github.io/vega/docs/api/view/#signals。这允许您为通过与图表交互生成的信号定义自定义 javascript 回调。
但是,在 Vega-Lite 或 Altair 中没有高级接口,因此要使用它,您必须直接使用 Javascript 中的视图 API呈现图表。
如果您想从 Altair 执行此操作,最好的方法可能是:
- 定义您的 Altair 图表,并使用
chart.to_json()
将其导出到 JSON
- 使用 vega-embed 编写单独的 HTML/Javascript 以提取此 JSON 并呈现图表
- 在此呈现脚本中,利用 View API 将自定义 Javascript 回调附加到图表生成的信号。