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
相关产品推荐
相关产品推荐

