如何创建自定义图像宽高比的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
相关产品推荐
相关产品推荐

