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
相关产品推荐
相关产品推荐

