Skip to main content
 首页 » 编程设计

python之matplotlib:如何在不改变方面的情况下消除绘图中的浪费空间

2025年05月04日16Renyi-Fan

我想在 matplotlib 中显示等宽的图。然后我想截断图的 y 部分以便更仔细地查看数据。但是,我希望自动更改 x 轴限制以适合数据的剩余可见部分。

到目前为止,这是我的代码(出于说明目的使用虚假数据):

import matplotlib.pyplot as plt 
 
 
fig, ax = plt.subplots(1, 1) 
ax.plot([-2,-1,0,1,2], [4,1,0,1,4]) 
ax.set_aspect('equal', adjustable='box') 
ax.set_ylim(0,1) 
fig.show() 

和生成的图像:

我的问题是,如何在保持纵横比不变的情况下删除绘图左右两侧的空白,从而使绘图更大并更好地拟合数据?不幸的是,我可能不知道我想要的确切 x 限制或在给定 y 限制的情况下推导它们的公式。

编辑:我希望生成的图像看起来像这样:

请您参考如下方法:

您要求的是某种基于可见数据的自动缩放。这在 matplotlib 中没有实现。不过,您可以手动执行此操作,即基于所需的 y 限制,检查哪些点可见,然后相应地设置 x 限制。

import matplotlib.pyplot as plt 
 
 
fig, ax = plt.subplots(1, 1) 
line, = ax.plot([-2,-1,0,1,2], [4,1,0,1,4]) 
 
ax.set_aspect('equal', adjustable='box') 
 
ymin = 0 
ymax = 1 
ax.set_ylim(ymin, ymax) 
x,y = line.get_data() 
cond = (y >= ymin) & (y <= ymax) 
ax.set_xlim(x[cond].min(), x[cond].max()) 
 
plt.show()