Comment partager l'axe x de deux parcelles après leur création?
j'essaie de partager deux sous-lots de l'axe, mais j'ai besoin de partager l'axe x après que la figure ait été créée. 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 un code pour partager les deux axes X.
Je n'ai trouvé aucune idée de comment je peux faire ça. Il y a quelques attributs
_shared_x_axes
et _shared_x_axes
quand je vérifie l'axe de la figure ( fig.get_axes()
) mais je ne sais pas comment les relier.
1 réponses
la façon habituelle de partager des axes est de créer les propriétés partagées lors de 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 n'importe quelle raison ,vous devez partager les axes après qu'ils aient été créés (en fait, en utilisant une bibliothèque différente qui crée quelques sous-lots, comme ici , ou partager un axe en médaillon pourrait être une raison), il y aurait encore une solution:
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 les labels xticklabels manuellement pour l'un des axes (au cas où cela serait souhaité).
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()