Observação
Clique aqui para baixar o código de exemplo completo
grades pcolormesh e sombreamento #
axes.Axes.pcolormesh
e pcolor
tem algumas opções de como as grades são dispostas e o sombreamento entre os pontos da grade.
Geralmente, se Z tem forma (M, N) , então a grade X e Y podem ser especificadas com forma (M+1, N+1) ou (M, N) , dependendo do argumento para o shading
argumento de palavra-chave. Observe que abaixo especificamos os vetores x como comprimento N ou N+1 e y como comprimento M ou M+1 e
pcolormesh
internamente fazemos as matrizes de malha X e Y a partir dos vetores de entrada.
import matplotlib.pyplot as plt
import numpy as np
Sombreamento Plano #
A especificação da grade com menos suposições é shading='flat'
e se a grade for uma unidade maior que os dados em cada dimensão, ou seja, tem forma
(M+1, N+1) . Nesse caso, X e Y especificam os cantos dos quadriláteros que são coloridos com os valores em Z . Aqui especificamos as arestas dos
(3, 5) quadriláteros com X e Y que são (4, 6) .
nrows = 3
ncols = 5
Z = np.arange(nrows * ncols).reshape(nrows, ncols)
x = np.arange(ncols + 1)
y = np.arange(nrows + 1)
fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z, shading='flat', vmin=Z.min(), vmax=Z.max())
def _annotate(ax, x, y, title):
# this all gets repeated below:
X, Y = np.meshgrid(x, y)
ax.plot(X.flat, Y.flat, 'o', color='m')
ax.set_xlim(-0.7, 5.2)
ax.set_ylim(-0.7, 3.2)
ax.set_title(title)
_annotate(ax, x, y, "shading='flat'")
Sombreamento plano, mesma grade de formato #
Freqüentemente, no entanto, os dados são fornecidos onde X e Y correspondem à forma de Z . Embora isso faça sentido para outros shading
tipos, não é mais permitido quando shading='flat'
(e gerará um MatplotlibDeprecationWarning a partir do Matplotlib v3.3). Historicamente, o Matplotlib eliminou silenciosamente a última linha e coluna de Z neste caso, para corresponder ao comportamento do Matlab. Se esse comportamento ainda for desejado, simplesmente solte a última linha e coluna manualmente:
Sombreamento mais próximo, mesma grade de forma #
Normalmente, descartar uma linha e coluna de dados não é o que o usuário quer dizer quando faz X , Y e Z todos da mesma forma. Para este caso, o Matplotlib permite shading='nearest'
e centraliza os quadriláteros coloridos nos pontos da grade.
Se uma grade que não é a forma correta é passada com shading='nearest'
um erro é levantado.
fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z, shading='nearest', vmin=Z.min(), vmax=Z.max())
_annotate(ax, x, y, "shading='nearest'")
Sombreamento Automático #
É possível que o usuário queira que o código escolha automaticamente qual usar, neste caso shading='auto'
decidirá se usará sombreamento 'plano' ou 'mais próximo' com base nas formas de X , Y e Z .
fig, axs = plt.subplots(2, 1, constrained_layout=True)
ax = axs[0]
x = np.arange(ncols)
y = np.arange(nrows)
ax.pcolormesh(x, y, Z, shading='auto', vmin=Z.min(), vmax=Z.max())
_annotate(ax, x, y, "shading='auto'; X, Y, Z: same shape (nearest)")
ax = axs[1]
x = np.arange(ncols + 1)
y = np.arange(nrows + 1)
ax.pcolormesh(x, y, Z, shading='auto', vmin=Z.min(), vmax=Z.max())
_annotate(ax, x, y, "shading='auto'; X, Y one larger than Z (flat)")
Sombreamento Gouraud #
O sombreamento Gouraud também pode ser especificado, onde a cor nos quadriláteros é linearmente interpolada entre os pontos da grade. As formas de X , Y , Z devem ser as mesmas.
Referências
O uso das seguintes funções, métodos, classes e módulos é mostrado neste exemplo:
Tempo total de execução do script: ( 0 minutos 2,324 segundos)