如何重新缩放限制X轴后的Matplotlib图表Y轴范围
Matplotlib X轴限制后Y轴未适配的问题解答
这不是Bug。Matplotlib默认逻辑是先基于全部输入数据计算坐标轴的初始范围,之后再应用你手动设置的X轴限制,所以Y轴会保留全量数据对应的范围(本例中是0到100),不会自动适配X轴裁剪后的区域。
无需截断NumPy数组的简便解决方法有以下几种:
方法1:设置X轴范围后触发Y轴自动缩放
在设置xlim之后,调用autoscale(axis='y'),让Matplotlib基于当前可见的X轴区域重新计算Y轴范围:
import numpy as np import matplotlib.pyplot as plt x = np.linspace(-10,10,100) y = x**2 fig, ax = plt.subplots() ax.plot(x,y) ax.set_xlim(-2, 2) ax.autoscale(axis='y') # 仅对Y轴执行自动缩放 plt.show()
方法2:先设置X轴范围再绘图
如果先定义好X轴的显示范围,再绘制曲线,Matplotlib会直接基于这个X范围筛选数据并计算对应的Y轴范围:
import numpy as np import matplotlib.pyplot as plt x = np.linspace(-10,10,100) y = x**2 fig, ax = plt.subplots() ax.set_xlim(-2, 2) # 先设定X轴显示范围 ax.plot(x,y) plt.show()
方法3:手动更新数据范围与视图
如果需要更精细的控制,可以先调用relim()重新计算当前可见区域的数据范围,再用autoscale_view()更新视图:
ax.set_xlim(-2, 2) ax.relim() # 重新计算数据边界(仅考虑当前X轴限制内的数据) ax.autoscale_view(scalex=False, scaley=True) # 固定X轴,自动缩放Y轴
内容的提问来源于stack exchange,提问作者Padix Key
相关产品推荐
相关产品推荐

