我正在尝试共享两个子图轴,但是在创建图形之后,我需要共享x轴。因此,例如,我创建了这个图:
import numpy as np import matplotlib.pyplot as plt t= np.arange(1000)/100. x = np.sin(2*np.pi*10*t) y = np.cos(2*np.pi*10*t) fig=plt.figure() ax1 = plt.subplot(211) plt.plot(t,x) ax2 = plt.subplot(212) plt.plot(t,y) # some code to share both x axis plt.show()
除了注释,我将插入一些代码以共享两个x轴。我没有发现任何线索我可以做到这一点。有一些属性 _shared_x_axes,_shared_x_axes当我检查图轴(fig.get_axes())时,我不知道如何链接它们。
_shared_x_axes
fig.get_axes()
共享轴的常用方法是在创建时创建共享属性。要么
fig=plt.figure() ax1 = plt.subplot(211) ax2 = plt.subplot(212, sharex = ax1)
要么
fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)
因此,无需在创建轴之后共享轴。
但是,如果由于某种原因需要 在创建轴后共享轴 (实际上,使用另一个库可以创建一些子图,例如here,或者共享插入轴可能是一个原因),仍然有解决方案:
使用
ax1.get_shared_x_axes().join(ax1, ax2)
在两个轴之间创建链接,ax1并且ax2。与创建时的共享相比,您必须为其中一个轴手动设置xticklabel(以防万一)。
ax1
ax2
一个完整的例子:
import numpy as np import matplotlib.pyplot as plt t= np.arange(1000)/100. x = np.sin(2*np.pi*10*t) y = np.cos(2*np.pi*10*t) fig=plt.figure() ax1 = plt.subplot(211) ax2 = plt.subplot(212) ax1.plot(t,x) ax2.plot(t,y) ax1.get_shared_x_axes().join(ax1, ax2) ax1.set_xticklabels([]) # ax2.autoscale() ## call autoscale if needed plt.show()