Perché il matplotlib.pyplot.faretra stati di documentazione in ordine errato di U, V parametri?

0

Domanda

Prima di tutto, qui è Google Colab link per mostrare il problema: https://colab.research.google.com/drive/1sq8Dn7wdNqbfRmz2SyQnj0MfRirxmneA?usp=sharing

Im utilizzando matplotlib per tracciare alcune di gradiente di campo generati con:

x,y = numpy.gradient(array_2d)

E ho notato una cosa strana. La documentazione si dichiara che la trama 2d campo, è necessario passare U (x) e V(y). Esempio:

plt.quiver(x, y)

Ma quando io faccio così con la Gaussiana campo, è ovvio che qualcosa è sbagliato, perché il risultato trame frecce tutto. Ma quando ho invertito l'ordine dei parametri, esempio:

plt.quiver(y, x)

Risultati in si aspettano perfetto di gradiente di campo.

Im sbagliare(documentazione, codice) o c'è davvero qualche problema?

Non dimenticare di controllare Google Colab per capire meglio il caso.

gradient matplotlib python
2021-11-19 00:32:31
1

Migliore risposta

1

Il quiver la funzione e la relativa documentazione sono corrette, è solo mal interpretato l'uscita del gradient funzione.

In uscita, il primo array (np.gradient(gaussianMatrix)[0]) è il gradiente lungo il primo asse (axis=0 = righe della matrice), che è l'asse y in matplotlib e la seconda serie è per il secondo asse (axis=1 = colonne della matrice), che è l'asse delle x in matplotlib.

Anche questo è spiegato nella documentazione (nella sezione esempi dopo il terzo esempio):

Per due matrici unidimensionali, sarà il ritorno di due array ordinati dall' asse. In questo esempio la prima matrice si distingue per la pendenza in righe e la seconda in colonne di direzione:

Per essere in linea con il matplotlib documentazione mi consiglia di utilizzare u e v invece di x e y se non si passa la freccia posizioni, ma solo le indicazioni. Quindi il codice dovrebbe essere:

v,u = numpy.gradient(array_2d)
plt.quiver(u, v)
2021-11-19 11:37:00

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................