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

如何创建自定义图像宽高比的Plotly Express可视化图表

Plotly 实现任意长宽比数组自动拉伸适配显示

使用matplotlib可以通过aspect='auto'轻松实现非等比数组的拉伸显示,对应代码如下:

plt.figure(figsize=(20, 10), dpi=80)
image = np.random.random([300, 5000])
plt.imshow(image, vmin=0, vmax=1, cmap='gray_r', aspect='auto')

Plotly imshow 默认锁定像素1:1宽高比,和matplotlib aspect='auto' 的自动适配逻辑不同,显示300×5000这类长宽差异极大的数组时会出现显示比例异常,按以下方式设置即可完全复现matplotlib的显示效果:

实现代码

import plotly.express as px
import numpy as np

# 测试数据,和示例代码一致
image = np.random.random([300, 5000])

fig = px.imshow(
    image,
    zmin=0,          # 对应matplotlib vmin
    zmax=1,          # 对应matplotlib vmax
    color_continuous_scale="gray_r", # 对应matplotlib cmap='gray_r'
    width=1600,      # 画布宽度,对应matplotlib figsize的宽度*dpi
    height=800       # 画布高度,对应matplotlib figsize的高度*dpi
)

# 核心设置:取消XY轴比例锁定,实现aspect='auto'的自动拉伸效果
fig.update_yaxes(scaleanchor=False)
# 可选:去除画布多余边距,让图像占满显示区域
fig.update_layout(margin=dict(l=5, r=5, t=5, b=5))

fig.show()

关键参数说明

  • scaleanchor=False:作用和matplotlib的aspect='auto'完全一致,解除轴比例绑定后,图像会自动拉伸填满当前设定的画布尺寸,不会保持原始像素的宽高比
  • 画布width和height可以根据自身屏幕尺寸自由调整,只要比例符合显示需求即可,不需要固定为示例数值
  • 不需要额外修改其他布局参数,运行后即可得到和matplotlib一致的拉伸显示效果,调大宽高数值即可获得更大更清晰的显示效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:06:26