matplotlib.pyplot:绘制后共享轴的x轴不会将它们置于相同的x轴限制

时间:2019-05-05 17:28:36

标签: python matplotlib

我试图在 之后(例如axsA)共享matplotlib轴(例如axsA)(不仅是在created之后被共享)。与我的预期相反,即使执行了plt.draw()和plt.show(),执行连接后,轴也不会使用共享的xlims重绘:

import matplotlib.pyplot as plt

# Share two subplot axes AFTER plotting
figA, axsA = plt.subplots(1, 2, sharex=False)
axsA[0].plot(range(0, 10), range(10))
axsA[1].plot(range(3, 13), range(10))
axsA[0].get_shared_x_axes().join(axsA[0], axsA[1])
figA.suptitle('Join after plotting: x-axes limits are not the same in the two axes.')
plt.draw()
plt.show()

Join two axes after plotting: x-axes limits are not the same in the two axes.

只有在绘图之前,我将共享轴加入到Grouper对象中似乎能够实现共享轴:

# Share two subplot axes BEFORE plotting
figB, axsB = plt.subplots(1, 2, sharex=False)
axsB[0].get_shared_x_axes().join(axsB[0], axsB[1])
axsB[0].plot(range(0, 10), range(10))
axsB[1].plot(range(3, 13), range(10))
figB.suptitle('Join after creation, before plotting: x-axes limits are the same oin both axes.')

Join two axes after creation, before plotting: x-axes limits are the same oin both axes.

这是matplotlib.pyplot中的错误还是我的理解?

1 个答案:

答案 0 :(得分:1)

llc只是将ax2附加到ax.get_shared_x_axes().join(ax, ax2)中。您仍然需要自动缩放轴

Grouper

因为两个轴现在都共享,所以自动缩放其中一个轴就足够了。

在第二个示例中,它按预期方式工作,因为默认情况下,通过ax.autoscale() 添加一条线会自动自动缩放轴。