Nota
Fare clic qui per scaricare il codice di esempio completo
pcolormesh griglie e ombreggiatura #
axes.Axes.pcolormesh
e pcolor
avere alcune opzioni su come sono disposte le griglie e l'ombreggiatura tra i punti della griglia.
Generalmente, se Z ha forma (M, N) , la griglia X e Y possono essere specificate con forma (M+1, N+1) o (M, N) , a seconda dell'argomento della shading
parola chiave. Si noti che di seguito specifichiamo i vettori x come lunghezza N o N+1 e y come lunghezza M o M+1, e
pcolormesh
internamente creiamo le matrici mesh X e Y dai vettori di input.
import matplotlib.pyplot as plt
import numpy as np
Ombreggiatura piatta #
La specifica della griglia con le assunzioni minime è shading='flat'
e se la griglia è più grande dei dati in ogni dimensione, cioè ha forma
(M+1, N+1) . In tal caso X e Y specificano gli angoli dei quadrilateri colorati con i valori in Z . Qui specifichiamo i bordi dei
quadrilateri (3, 5) con X e Y che sono (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'")
Ombreggiatura piatta, griglia della stessa forma #
Spesso, tuttavia, vengono forniti dati in cui X e Y corrispondono alla forma di Z . Sebbene ciò abbia senso per altri shading
tipi, non è più consentito quando shading='flat'
(e solleverà un MatplotlibDeprecationWarning a partire da Matplotlib v3.3). Storicamente, Matplotlib ha lasciato cadere silenziosamente l'ultima riga e colonna di Z in questo caso, per corrispondere al comportamento di Matlab. Se questo comportamento è ancora desiderato, è sufficiente eliminare manualmente l'ultima riga e colonna:
Ombreggiatura più vicina, stessa griglia di forma #
Di solito, eliminare una riga e una colonna di dati non è ciò che l'utente intende quando crea X , Y e Z tutti della stessa forma. In questo caso, Matplotlib consente shading='nearest'
e centra i quadrilateri colorati sui punti della griglia.
Se viene passata una griglia che non è della forma corretta viene shading='nearest'
generato un errore.
fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z, shading='nearest', vmin=Z.min(), vmax=Z.max())
_annotate(ax, x, y, "shading='nearest'")
Ombreggiatura automatica #
È possibile che l'utente desideri che il codice scelga automaticamente quale utilizzare, in questo caso shading='auto'
deciderà se utilizzare l'ombreggiatura "piatta" o "più vicina" in base alle forme di 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)")
Ombreggiatura Gouraud #
È inoltre possibile specificare l' ombreggiatura Gouraud , in cui il colore nei quadrilateri viene interpolato linearmente tra i punti della griglia. Le forme di X , Y , Z devono essere le stesse.
Riferimenti
L'uso delle seguenti funzioni, metodi, classi e moduli è mostrato in questo esempio:
Tempo di esecuzione totale dello script: (0 minuti 2,324 secondi)