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

Plotly Express imshow纵横比异常及设置宽高后无显示问题求助

解决Plotly Express imshow纵横比异常及宽高设置后图表不显示问题

我的数据横轴维度为433,远大于纵轴的10,使用Plotly Express的imshow函数可视化时出现怪异纵横比。尝试添加width和height参数调整,但设置后图表完全无法显示。当前代码如下:

import plotly.express as px
from openpyxl import load_workbook

wb = load_workbook('file.xlsx')
ws = wb['2']

data = []
for i in range(10):
    data.append([0] * 433)
x = [i + 1 for i in range(433)]
y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 纵轴维度10,横轴维度433

for item in ws:
    data[item[2].value][item[3].value - 1] += 1

fig = px.imshow(data, x=x, y=y)

fig.show()

解决方法

方法一:通过坐标轴比例固定纵横比

直接设置width/height容易和Plotly自动布局冲突,改用update_layout配置坐标轴比例,同时设置合理的整体宽高:

fig = px.imshow(data, x=x, y=y)
fig.update_layout(
    autosize=False,
    width=1200,  # 按需调整整体宽度
    height=300,  # 按需调整整体高度
    yaxis=dict(
        scaleanchor="x",  # 以横轴为基准缩放
        scaleratio=10/433  # 纵轴与横轴的比例,匹配数据维度10:433
    )
)
fig.show()

方法二:使用aspect参数直接控制单元格比例

px.imshow的aspect参数可直接定义热图单元格的宽高比,更简洁:

fig = px.imshow(data, x=x, y=y, aspect=433/10)  # 横轴与纵轴的比例
fig.update_layout(width=1200, height=300)  # 可选,调整整体显示尺寸
fig.show()

问题原因

直接给px.imshow传递width和height参数会干扰Plotly的自动布局逻辑,导致图表容器尺寸异常无法显示。正确流程是先固定单元格的纵横比,再调整整体图表的宽高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:10:13