cuadrículas de malla de color y sombreado #

axes.Axes.pcolormeshy pcolortiene algunas opciones sobre cómo se distribuyen las cuadrículas y el sombreado entre los puntos de la cuadrícula.

En general, si Z tiene forma (M, N) , la cuadrícula X e Y se puede especificar con forma (M+1, N+1) o (M, N) , según el argumento de la shadingpalabra clave. Tenga en cuenta que a continuación especificamos los vectores x como longitud N o N+1 e y como longitud M o M+1, e pcolormeshinternamente hacemos las matrices de malla X e Y a partir de los vectores de entrada.

import matplotlib.pyplot as plt
import numpy as np

Sombreado plano #

La especificación de cuadrícula con menos suposiciones es shading='flat' y si la cuadrícula es más grande que los datos en cada dimensión, es decir, tiene forma (M+1, N+1) . En ese caso, X e Y especifican las esquinas de los cuadriláteros que están coloreados con los valores en Z. Aquí especificamos las aristas de los (3, 5) cuadriláteros con X e Y que son (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'")
sombreado = 'plano'

Sombreado plano, cuadrícula de la misma forma #

Sin embargo, a menudo se proporcionan datos en los que X e Y coinciden con la forma de Z . Si bien esto tiene sentido para otros shadingtipos, ya no está permitido cuando shading='flat'(y generará una MatplotlibDeprecationWarning a partir de Matplotlib v3.3). Históricamente, Matplotlib eliminó silenciosamente la última fila y columna de Z en este caso, para que coincida con el comportamiento de Matlab. Si aún desea este comportamiento, simplemente suelte la última fila y columna 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 misma forma

Sombreado más cercano, cuadrícula de la misma forma #

Por lo general, soltar una fila y una columna de datos no es lo que el usuario quiere decir cuando hace que X , Y y Z tengan la misma forma. Para este caso, Matplotlib permite shading='nearest'y centra los cuadriláteros coloreados en los puntos de la cuadrícula.

Si se pasa una cuadrícula que no tiene la forma correcta, se genera shading='nearest' un error.

fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z, shading='nearest', vmin=Z.min(), vmax=Z.max())
_annotate(ax, x, y, "shading='nearest'")
sombreado = 'más cercano'

Sombreado automático #

Es posible que al usuario le gustaría que el código elija automáticamente cuál usar, en este caso shading='auto'decidirá si usar sombreado 'plano' o 'más cercano' en función de las formas de X , Y y 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)")
sombreado='automático';  X, Y, Z: misma forma (más cercana), shading='auto';  X, Y uno más grande que Z (plano)

Sombreado Gouraud #

También se puede especificar el sombreado de Gouraud , donde el color de los cuadriláteros se interpola linealmente entre los puntos de la cuadrícula. Las formas de X , Y , Z deben ser iguales.

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()
sombreado='gouraud';  X, Y misma forma que Z

Referencias

En este ejemplo se muestra el uso de las siguientes funciones, métodos, clases y módulos:

Tiempo total de ejecución del script: (0 minutos 2.324 segundos)

Galería generada por Sphinx-Gallery