使用Plotly的imshow函数时如何正确设置x轴和y轴的显示范围?
问题原因
Plotly 5.x 版本的 px.imshow 默认会为 y 轴启用 autorange: 'reversed' 配置,匹配图像坐标y轴从上到下数值递增的逻辑。直接手动设置y轴range时,默认的autorange配置会优先生效,导致自定义范围被覆盖。
解决方法
只需要在更新y轴配置时额外添加 autorange=False 即可,修改后的完整代码如下:
import numpy as np import plotly.express as px # 测试数据 img = np.random.randn(400,400) xmin, xmax, ymin, ymax = 100, 200, 250, 350 fig = px.imshow( img, color_continuous_scale='gray', ) fig.update_xaxes(range=[xmin, xmax]) # 新增autorange=False参数关闭默认自动范围逻辑 fig.update_yaxes(range=[ymax, ymin], autorange=False) fig.show()
补充方案
如果你不想单独设置轴范围,也可以直接在px.imshow中通过extent参数一次性定义坐标轴边界,写法和matplotlib的imshow参数完全兼容:
fig = px.imshow( img, color_continuous_scale='gray', extent=[xmin, xmax, ymin, ymax] ) fig.show()
以上两种方案都兼容你使用的5.3.1版本Plotly。
内容的提问来源于stack exchange,提问作者ollerend
相关产品推荐
相关产品推荐

