由于sharex和相等的纵横比,Matplotlib设置的轴限制与显示的限制不匹配

时间:2013-08-29 19:32:00

标签: python matplotlib

我写了一个小GUI,显示了隧道剖面示意图和诱导沉降。上图的宽高比设置为“自动”。较低的图的宽高比设置为“相等”(因为隧道会失真)。这些图的x轴是共享的。

我遇到的问题是下图的y轴没有显示所有数据。当我打印出下图的y限制时,y限制为(-20,100),这应该允许它显示所有数据。这个问题的解决方案是增加x限制,但我无法弄清楚如何以编程方式执行此操作,因为较低图的y限制输出不是可见限制,大约是(-2,84)。 / p>

任何想法或修正?

Screenshot of issue

MWE:

import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(2,1,sharex=True)

ax1.plot([-10,0,10,-10],[-1,1,-1,-1])
ax2.plot([-5,-5,5,5,-5],[-10,10,10,-10,-10])
ax2.set_aspect('equal')
print(ax2.get_ylim())
plt.show()

1 个答案:

答案 0 :(得分:0)

这有点深入到了胆量,但

w = ax.get_window_extent(None).width
h = ax.get_window_extent(None).height

应该让您在屏幕上显示(您可能需要传递ax.figure.canvas.renderer而不是None)身高和宽度。

然后您可以知道(xmax-xmin)/(ymax-ymin)之间的比率,并可以相应地设置您的x限制。

这里的根本问题是你有一组相互关联的数字,你只能指定它们的子集。