Supposons que je lance le script suivant:
import matplotlib.pyplot as plt
lineWidth = 20
plt.figure()
plt.plot([0,0],[-1,1], lw=lineWidth, c='b')
plt.plot([-1,1],[-1,1], lw=lineWidth, c='r')
plt.plot([-1,1],[1,-1], lw=lineWidth, c='g')
plt.show()
Cela produit les éléments suivants:
Comment puis-je spécifier l'ordre des couches au lieu d'avoir Python pick pour moi?
Je ne sais pas pourquoi zorder
a ce comportement et il est probable qu'il s'agisse d'un bogue ou, à tout le moins, d'une fonctionnalité mal documentée. C'est peut-être parce qu'il y a déjà des références automatiques à zorder
lorsque vous construisez un tracé (comme une grille, un axe, etc.) et lorsque vous essayez de spécifier le zorder
pour les éléments que vous souhaitez. en quelque sorte les chevauchent. C'est hypothétique dans tous les cas.
Pour que votre problème soit résolu, il vous suffit d'exagérer les différences dans zorder
. Par exemple au lieu de 0,1,2
, fais-le 0,5,10
:
import matplotlib.pyplot as plt
lineWidth = 20
plt.figure()
plt.plot([0,0],[-1,1], lw=lineWidth, c='b',zorder=10)
plt.plot([-1,1],[-1,1], lw=lineWidth, c='r',zorder=5)
plt.plot([-1,1],[1,-1], lw=lineWidth, c='g',zorder=0)
plt.show()
, ce qui entraîne:
Pour cette parcelle, j'ai précisé l'ordre inverse de votre question.
Les couches sont empilées de bas en haut dans le même ordre que les appels correspondants à la fonction de tracé.
import matplotlib.pyplot as plt
lineWidth = 30
plt.figure()
plt.subplot(2, 1, 1) # upper plot
plt.plot([-1, 1], [-1, 1], lw=5*lineWidth, c='b') # bottom blue
plt.plot([-1, 1], [-1, 1], lw=3*lineWidth, c='r') # middle red
plt.plot([-1, 1], [-1, 1], lw=lineWidth, c='g') # top green
plt.subplot(2, 1, 2) # lower plot
plt.plot([-1, 1], [-1, 1], lw=5*lineWidth, c='g') # bottom green
plt.plot([-1, 1], [-1, 1], lw=3*lineWidth, c='r') # middle red
plt.plot([-1, 1], [-1, 1], lw=lineWidth, c='b') # top blue
plt.show()
Il ressort clairement de la figure ci-dessous que les parcelles sont organisées selon la règle inférieure première, supérieure dernière .