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

如何在Plotly中使用px.imshow并排显示两张正方形图片?

如何强制Plotly子图中的两张正方形图片均显示为正方形?

问题出在子图的坐标轴没有强制保持1:1的纵横比。单独用px.imshow时,Plotly会自动给图像设置aspect="equal"来保证正方形显示,但把图像trace加到子图后,这个设置不会被继承,子图的轴会默认填充分配到的空间,导致图片变形。

直接给每个子图的坐标轴设置aspect="equal"就能从根源解决问题,不需要靠调整整体图的宽高来近似。修改后的代码如下:

import numpy as np
import plotly.express as px
import plotly.graph_objs as go
from plotly.subplots import make_subplots

im1 = np.random.random(size=(256, 256, 3))
im2 = np.random.random(size=(256, 256, 3))

fig = make_subplots(rows=1, cols=2, shared_yaxes=True, horizontal_spacing=0.01)
fig.add_trace(px.imshow(im1).data[0], row=1, col=1)
fig.add_trace(px.imshow(im2).data[0], row=1, col=2)

# 关键:给所有坐标轴设置等纵横比,同时隐藏刻度标签(可选,优化视觉效果)
fig.update_xaxes(showticklabels=False, aspect="equal")
fig.update_yaxes(showticklabels=False, aspect="equal")

fig.update_layout(width=600, height=300, autosize=False)
fig.show()

原理说明

  • aspect="equal"会强制坐标轴的单位长度在x和y方向保持一致,确保正方形图片不会被拉伸或压缩。
  • 隐藏刻度标签是可选操作,图片展示场景通常不需要坐标轴刻度,去掉后视觉效果更整洁。
  • 无论你设置整体图的宽高是多少,只要每个子图的轴保持等纵横比,两张图片都会严格显示为正方形,不用再靠放大整体尺寸来凑近似效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:20:13