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

使用ipywidgets控制Plotly交互式箱线图分组时更新数据报错如何解决

问题原因

报错的核心原因是FigureWidget的data属性为只读元组,不支持直接赋值列表对象,这就是触发"you cannot update data directly"错误的根源。

解决方法

仅需调整回调函数的轨迹更新逻辑即可,这里提供两种可行写法:

写法1:转换轨迹列表为元组后赋值

只需要把你原来回调函数里的g.data = gdata改为g.data = tuple(gdata)即可,修改后的完整回调代码如下:

def response_box(change):
    col = column.value
    with g.batch_update():
        gdata = []
        for val in df[col].unique():
            groupData = df.query(f'{col} == "{val}"')
            gdata.append(
                go.Box(y = groupData['distance'],
                      name = val)
            )
        # 转为元组后再赋值
        g.data = tuple(gdata)

写法2:先清空再逐行添加轨迹

如果担心不同版本的兼容性,也可以先清空所有现有轨迹,再逐个添加新生成的轨迹:

def response_box(change):
    col = column.value
    with g.batch_update():
        # 清空所有现有轨迹
        g.data = ()
        for val in df[col].unique():
            groupData = df.query(f'{col} == "{val}"')
            g.add_trace(
                go.Box(y = groupData['distance'],
                      name = val)
            )

两种写法都可以实现切换下拉选项时动态更新箱线图分组的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:24:06