Nota
Haga clic aquí para descargar el código de ejemplo completo
cuadrículas de malla de color y sombreado #
axes.Axes.pcolormesh
y pcolor
tiene 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 shading
palabra 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
pcolormesh
internamente 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, 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 shading
tipos, 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:
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 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 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.
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)