You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NiceGUI的Plotly图表中将点击点值赋值给变量?

问题1:自定义函数无法生效的原因

Plotly的plotly_click事件触发时会自动传递事件参数,你的click_notify函数没有定义参数接收这个参数,导致回调无法正常执行。而官方示例里的ui.notify本身支持接收额外参数(即使不用),所以能正常触发。

只需给自定义函数添加参数接收事件对象即可修复:

def click_notify(event):
    ui.notify()

问题2:获取选中点索引并赋值给NiceGUI可识别的变量

使用NiceGUI的**响应式变量(reactive)**来存储索引,变量变化时UI会自动响应。具体实现如下:

import plotly.graph_objects as go
from nicegui import ui

# 创建响应式变量,初始值设为-1表示未选中任何点
selected_index = ui.reactive(-1)

def handle_plot_click(event):
    # 从事件参数中提取Plotly的点击数据
    click_points = event.args.get('points')
    if click_points:
        # 获取第一个点击点的索引(支持多选,这里取第一个为例)
        idx = click_points[0]['pointIndex']
        # 更新响应式变量的值
        selected_index.value = idx
        ui.notify(f"选中点索引:{idx}")

fig = go.Figure(go.Scatter(x=[1, 2, 3, 4], y=[1, 2, 3, 2.5]))
fig.update_layout(margin=dict(l=0, r=0, t=0, b=0))
plot = ui.plotly(fig).classes('w-full h-40')
plot.on('plotly_click', handle_plot_click)

# 实时显示当前选中的索引
ui.label(f"当前选中索引:{selected_index}")

ui.run()

关键说明:

  • event.args包含Plotly点击事件的完整数据,points数组存储所有被点击的点信息
  • pointIndex字段对应该点在数据序列中的索引位置
  • 响应式变量selected_index被更新后,UI中的标签会自动同步显示最新值,无需手动刷新

内容的提问来源于stack exchange,提问作者DrewGIS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:04:59