我想在 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()
