Dlaczego w dokumentacji matplotlib.pyplot.quiver znajduje się nieprawidłowa kolejność parametrów U, V?

0

Pytanie

Przede wszystkim, oto link do Google Colab, aby pokazać problem: https://colab.research.google.com/drive/1sq8Dn7wdNqbfRmz2SyQnj0MfRirxmneA?usp=sharing

Używam matplotlib do budowy jakiegoś градиентного pola generowanego za pomocą:

x,y = numpy.gradient(array_2d)

I zauważyłem dziwną rzecz. W dokumentacji podano, że do budowy 2d-pola należy przekazać U (x) i V(y). Przykład:

plt.quiver(x, y)

Ale kiedy robię to z polem Gaussa, jest oczywiste, że coś jest nie tak, bo wynik pokazuje strzałki wokół. Ale kiedy инвертирую kolejność parametrów, na przykład:

plt.quiver(y, x)

Prowadzi do oczekiwanego ideału градиентному pola.

Źle zrozumiałem(dokumentacja, kod) czy naprawdę jest jakiś problem?

Nie zapomnij sprawdzić w Google Colab, aby lepiej zrozumieć istotę sprawy.

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

Najlepsza odpowiedź

1

To quiver funkcja i jej dokumentacja wierni, po prostu prawidłowo interpretować wniosekgradient funkcja.

Na wyjściu pierwszy array (np.gradient(gaussianMatrix)[0])- to gradientu wzdłuż pierwszej osi (axis=0 = wiersza tablicy), który jest osią y w matplotlib, a drugi tablica przeznaczona jest dla drugiej osi (axis=1 = kolumny tablicy), który jest osią x w matplotlib.

To również wyjaśnione w dokumentacji (w dziale przykłady po trzecim przykład).:

Dla dwuwymiarowych tablic возвращаемыми będą dwa tablicy, wg osi. W tym przykładzie pierwszy tablicy oznacza gradient w wierszach , a drugi-w kierunku kolumn:

Aby dopasować dokumentacji matplotlib, polecam użyć u i v zamiast x i y jeśli przekażesz nie miejsca strzałek, a tylko kierunku. Dlatego twój kod musi być:

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

W innych językach

Ta strona jest w innych językach

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