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

Plotly下拉菜单更新imshow图像出现空图问题求助

解决Plotly下拉菜单更新imshow图像为空的问题

问题核心在于对px.imshow生成的trace属性理解偏差:px.imshow实际创建的是heatmap类型的trace,而非独立的imshow类型。因此通过restyle更新时,不能使用img属性,必须修改heatmap的z数据属性。

修正后的代码

import numpy as np
import plotly.express as px

fig = px.imshow(np.random.rand(5,5))

def create_dropdown():
    keys = ["A", "B", "C", "D", "E"]
    buttons = []
    for k in keys:
        new_data = np.random.rand(5,5)
        buttons.append({
            "method": "restyle",
            "label": k,
            "visible": True,
            "args": [
                {"z": new_data},  # 直接传入新二维数组作为heatmap的z数据
                [0]  # 目标为第0个trace
            ]
        })
    return buttons

updatemenu=[
    {
        "buttons": create_dropdown(),
        "direction": "down",
        "showactive": True
    }
]
fig.update_layout(updatemenus=updatemenu)

fig.show()

关键修改说明

  • 替换args中的{"img": ..., "type": "imshow"}为{"z": new_data}:heatmap trace通过z属性存储图像数据,这是Plotly内部的核心数据字段
  • 保留method: "restyle":此方法用于修改已有trace的数据,符合当前仅更新图像内容的需求

额外提示

若想直观验证Plotly生成的trace类型,可在创建fig后执行print(fig.data),会看到输出为包含type: 'heatmap'的对象,其z属性即为初始图像数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 13:03:23