Observação
Clique aqui para baixar o código de exemplo completo
Demonstração do Zorder #
A ordem de desenho dos artistas é determinada por seu zorder
atributo, que é um número de ponto flutuante. Artistas com maior zorder
são desenhados no topo. Você pode alterar a ordem de artistas individuais definindo seus arquivos zorder
. O valor padrão depende do tipo do Artista:
Artista |
ordem Z |
---|---|
Imagens ( |
0 |
1 |
|
|
2 |
Tiques principais |
2.01 |
|
3 |
5 |
Qualquer chamada para um método de plotagem pode definir explicitamente um valor para o zorder desse item específico.
Observação
set_axisbelow
e rcParams["axes.axisbelow"]
(padrão: 'line'
) são auxiliares convenientes para definir a ordem z de tiques e linhas de grade.
O desenho é feito por Axes
vez. Se você tiver eixos sobrepostos, todos os elementos dos segundos eixos serão desenhados sobre os primeiros eixos, independentemente de sua ordem z relativa.
O exemplo a seguir contém a Line2D
created by plot()
e os pontos (a PatchCollection
) created by scatter()
. Portanto, por padrão, os pontos estão abaixo da linha (primeira subtrama). Na segunda subtrama, o zorder
é definido explicitamente para mover os pontos no topo da linha.
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()
Muitas funções que criam um objeto visível aceitam um zorder
parâmetro. Como alternativa, você pode chamar set_zorder()
o objeto criado posteriormente.
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()