grades pcolormesh e sombreamento #

axes.Axes.pcolormeshe pcolortem 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 shadingargumento 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 pcolormeshinternamente 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'

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 shadingtipos, 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:

x = np.arange(ncols)  # note *not* ncols + 1 as before
y = np.arange(nrows)
fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z[:-1, :-1], shading='flat', vmin=Z.min(), vmax=Z.max())
_annotate(ax, x, y, "shading='flat': X, Y, C same shape")
shading='flat': X, Y, C mesma forma

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 = 'mais próximo'

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='automático';  X, Y, Z: mesma forma (mais próxima), sombreamento='auto';  X, Y um maior que Z (plano)

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.

fig, ax = plt.subplots(constrained_layout=True)
x = np.arange(ncols)
y = np.arange(nrows)
ax.pcolormesh(x, y, Z, shading='gouraud', vmin=Z.min(), vmax=Z.max())
_annotate(ax, x, y, "shading='gouraud'; X, Y same shape as Z")

plt.show()
sombreamento='gouraud';  X, Y mesma forma que Z

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)

Galeria gerada por Sphinx-Gallery