如何在matplotlib中锁定x轴范围后叠加绘图?
解决Matplotlib叠加绘图时固定原x轴带边距范围并自适应y轴的问题
核心思路
先绘制第一个数据集,获取Matplotlib自动生成的带边距的x轴范围,叠加新数据后再重置x轴为该范围,同时让y轴自动适配所有数据的垂直区间。
代码示例(pyplot接口)
import matplotlib.pyplot as plt import numpy as np # 模拟测试数据 x1 = np.linspace(0, 10, 100) y1 = np.sin(x1) x2 = np.linspace(-2, 12, 100) y2 = np.cos(x2) * 1.5 # 1. 绘制第一个折线,获取带自动边距的x轴范围 plt.plot(x1, y1) original_xlim = plt.xlim() # 保存初始x轴范围(包含Matplotlib自动添加的边距) # 2. 叠加绘制第二个折线 plt.plot(x2, y2, color='red') # 3. 重置x轴为初始带边距的范围,y轴已自动适配所有数据 plt.xlim(original_xlim) plt.show()
代码示例(面向对象接口,更推荐)
import matplotlib.pyplot as plt import numpy as np x1 = np.linspace(0, 10, 100) y1 = np.sin(x1) x2 = np.linspace(-2, 12, 100) y2 = np.cos(x2) * 1.5 fig, ax = plt.subplots() # 绘制第一个数据集并保存x轴范围 ax.plot(x1, y1) original_xlim = ax.get_xlim() # 叠加新数据 ax.plot(x2, y2, color='red') # 恢复原x轴范围,y轴自动适配 ax.set_xlim(original_xlim) plt.show()
说明
- 第一次绘图后,Matplotlib会自动计算包含合理边距的x轴范围,用
plt.xlim()或ax.get_xlim()获取这个范围,避免手动设置x1.min()和x1.max()导致的边距缺失问题。 - 叠加新数据后,Matplotlib会自动扩展y轴范围以容纳所有数据,此时只需重置x轴为初始范围即可实现需求。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

