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

Plotly子图Y轴范围不匹配,手动定义范围无效求助

Plotly子图Y轴统一范围与刻度自定义解决方案

一、修复Y轴范围不生效问题

你之前用update_layout单独指定yaxis/yaxis2的方式没起作用,是因为Plotly子图的轴配置更适合用update_yaxes方法,或者在创建子图时直接绑定范围。两种靠谱方法:

方法1:创建子图时直接设置

如果用make_subplots初始化子图,添加完数据后用update_yaxes按行指定范围:

from plotly.subplots import make_subplots
import plotly.graph_objects as go

# 创建2行1列的子图
fig = make_subplots(rows=2, cols=1)
# 往子图里加数据
fig.add_trace(go.Scatter(x=[1,2,3], y=[2,5,8]), row=1, col=1)
fig.add_trace(go.Scatter(x=[1,2,3], y=[3,7,12]), row=2, col=1)

# 统一设置两个Y轴的范围为[0,14]
fig.update_yaxes(range=[0,14], row=1, col=1)
fig.update_yaxes(range=[0,14], row=2, col=1)

fig.show()

方法2:批量更新所有Y轴

如果已经创建好子图,直接用update_yaxes批量生效,不用逐个写yaxis/yaxis2:

fig.update_yaxes(range=[0,14])

注意:一定要在添加完所有数据轨迹之后执行这段代码,不然Plotly会根据数据自动调整轴范围,覆盖你的手动设置。

二、自定义刻度

1. 指定刻度数量

用nticks参数设置刻度的大致数量,Plotly会自动生成均匀分布的刻度:

fig.update_yaxes(range=[0,14], nticks=7)  # 生成0、2、4...14共7个刻度

2. 手动设置刻度位置

用tickvals指定精确的刻度值,还可以用ticktext自定义显示文本(不需要自定义文本的话可以只写tickvals):

fig.update_yaxes(
    range=[0,14],
    tickvals=[0,3,6,9,12,14],  # 手动指定刻度位置
    ticktext=["0", "3", "6", "9", "12", "14"]  # 对应显示的文本,可省略
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:17:38