¿Cómo compartir el eje x de dos subplots después de crearlas?

Estoy tratando de compartir el eje de dos subplots, pero necesito compartir el eje x después de que se creó la figura. Así, por ejemplo, creo esta figura:

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() 

En lugar del comentario, insertaría un código para compartir ambos ejes x. No encontré ninguna pista de cómo puedo hacer eso. Hay algunos atributos _shared_x_axes y _shared_x_axes cuando fig.get_axes() figura del eje ( fig.get_axes() ) pero no sé cómo vincularlos.

Related of "¿Cómo compartir el eje x de dos subplots después de crearlas?"

La forma habitual de compartir ejes es crear las propiedades compartidas en el momento de la creación. Ya sea

 fig=plt.figure() ax1 = plt.subplot(211) ax2 = plt.subplot(212, sharex = ax1) 

o

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

Por lo tanto, compartir los ejes después de que se hayan creado no debería ser necesario.

Sin embargo, si por alguna razón, necesita compartir ejes después de que se hayan creado (en realidad, usar una biblioteca diferente que cree algunas subplots, como aquí , o compartir una inserción de ejes podría ser una razón), todavía habría una solución:

Utilizando

 ax1.get_shared_x_axes().join(ax1, ax2) 

crea un enlace entre los dos ejes, ax1 y ax2 . A diferencia de la compartición en el momento de la creación, tendrá que desactivar manualmente las tags xticklabels para uno de los ejes (en caso de que se desee).

Un ejemplo completo:

 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()