Noter
Cliquez ici pour télécharger l'exemple de code complet
Axe partagé #
Vous pouvez partager les limites des axes x ou y d'un axe avec un autre en transmettant une Axes
instance en tant qu'argument de mot-clé sharex ou sharey .
La modification des limites d'axe sur un axe se répercutera automatiquement sur l'autre, et vice-versa, de sorte que lorsque vous naviguez avec la barre d'outils, les axes se suivront sur leur axe partagé. Idem pour les changements dans la mise à l'échelle de l'axe (par exemple, log vs linéaire). Cependant, il est possible d'avoir des différences dans l'étiquetage des ticks, par exemple, vous pouvez désactiver sélectivement les étiquettes des ticks sur un axe.
L'exemple ci-dessous montre comment personnaliser les étiquettes des graduations sur les différents axes. Les axes partagés partagent le localisateur de ticks, le formateur de ticks, les limites de vue et la transformation (par exemple, logarithmique, linéaire). Mais les ticklabels eux-mêmes ne partagent pas de propriétés. Il s'agit d'une fonctionnalité et non d'un bogue, car vous souhaiterez peut-être réduire les étiquettes des graduations sur les axes supérieurs, par exemple dans l'exemple ci-dessous.
Si vous souhaitez désactiver les ticklabels pour un axe donné (par exemple, sur subplot(211) ou subplot(212), vous ne pouvez pas faire l'astuce standard :
setp(ax2, xticklabels=[])
car cela modifie le formateur de tiques, qui est partagé entre tous les axes. Mais vous pouvez modifier la visibilité des étiquettes, qui est une propriété :
setp(ax2.get_xticklabels(), visible=False)
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.01, 5.0, 0.01)
s1 = np.sin(2 * np.pi * t)
s2 = np.exp(-t)
s3 = np.sin(4 * np.pi * t)
ax1 = plt.subplot(311)
plt.plot(t, s1)
plt.tick_params('x', labelsize=6)
# share x only
ax2 = plt.subplot(312, sharex=ax1)
plt.plot(t, s2)
# make these tick labels invisible
plt.tick_params('x', labelbottom=False)
# share x and y
ax3 = plt.subplot(313, sharex=ax1, sharey=ax1)
plt.plot(t, s3)
plt.xlim(0.01, 5.0)
plt.show()