J'essaie de partager deux axes de sous-parcelles, mais je dois partager un axe x après la création de la figure. Ainsi, par exemple, je crée cette figure:
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()
Au lieu du commentaire, j'insérerais du code pour partager les deux axes x. Je n'ai trouvé aucune idée de comment faire cela. Il y a quelques attributs _shared_x_axes
et _shared_x_axes
lorsque je vérifie la représentation de l'axe (fig.get_axes()
) mais je ne sais pas comment les relier.
La manière habituelle de partager des axes consiste à créer les propriétés partagées à la création. Soit
fig=plt.figure()
ax1 = plt.subplot(211)
ax2 = plt.subplot(212, sharex = ax1)
ou
fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)
Le partage des axes après leur création ne devrait donc pas être nécessaire.
Cependant, si pour une raison quelconque, vous devez partager les axes après leur création (en fait, utilisez une bibliothèque différente qui crée des sous-parcelles, comme ici , ou partager un axe inséré pourrait être une raison), il y aurait toujours une solution:
En utilisant
ax1.get_shared_x_axes().join(ax1, ax2)
crée un lien entre les deux axes, ax1
et ax2
. Contrairement au partage au moment de la création, vous devrez désactiver manuellement les xticklabels pour l’un des axes (si vous le souhaitez).
Un exemple complet:
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()