Noter
Cliquez ici pour télécharger l'exemple de code complet
Démo Zorder #
L'ordre de dessin des artistes est déterminé par leur zorder
attribut, qui est un nombre à virgule flottante. Les artistes avec le plus haut zorder
sont dessinés en haut. Vous pouvez modifier l'ordre des artistes individuels en définissant leur fichier zorder
. La valeur par défaut dépend du type de l'Artiste :
Artiste |
Ordre Z |
---|---|
Images ( |
0 |
1 |
|
|
2 |
Tiques majeures |
2.01 |
|
3 |
5 |
Tout appel à une méthode de traçage peut définir explicitement une valeur pour l'ordre z de cet élément particulier.
Noter
set_axisbelow
et rcParams["axes.axisbelow"]
(par défaut : 'line'
) sont des aides pratiques pour définir l'ordre des graduations et des lignes de grille.
Le dessin est fait par Axes
à la fois. Si vous avez des Axes qui se chevauchent, tous les éléments des seconds Axes sont dessinés au-dessus des premiers Axes, quel que soit leur ordre relatif.
L'exemple suivant contient un Line2D
créé par plot()
et les points (a PatchCollection
) créé par scatter()
. Par conséquent, par défaut, les points sont sous la ligne (première sous-parcelle). Dans la deuxième sous-parcelle, la zorder
est définie explicitement pour déplacer les points en haut de la ligne.
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(6, 3.2))
ax1.plot(x, y, 'C3', lw=3)
ax1.scatter(x, y, s=120)
ax1.set_title('Lines on top of dots')
ax2.plot(x, y, 'C3', lw=3)
ax2.scatter(x, y, s=120, zorder=2.5) # move dots on top of line
ax2.set_title('Dots on top of lines')
plt.tight_layout()
De nombreuses fonctions qui créent un objet visible acceptent un zorder
paramètre. Alternativement, vous pouvez appeler set_zorder()
l'objet créé ultérieurement.
x = np.linspace(0, 7.5, 100)
plt.rcParams['lines.linewidth'] = 5
plt.figure()
plt.plot(x, np.sin(x), label='zorder=2', zorder=2) # bottom
plt.plot(x, np.sin(x+0.5), label='zorder=3', zorder=3)
plt.axhline(0, label='zorder=2.5', color='lightgrey', zorder=2.5)
plt.title('Custom order of elements')
l = plt.legend(loc='upper right')
l.set_zorder(2.5) # legend between blue and orange line
plt.show()