De ce nu matplotlib.pyplot.tolba documentația membre incorecte pentru a U, V parametrii?

0

Problema

Înainte de orice, aici este Google Colab link-ul de la showcase problema: https://colab.research.google.com/drive/1sq8Dn7wdNqbfRmz2SyQnj0MfRirxmneA?usp=sharing

Im folosind matplotlib să complot un gradient de câmp generate cu:

x,y = numpy.gradient(array_2d)

Și am observat ceva ciudat. Documentația prevede că pentru plot 2d câmp, aveți nevoie pentru a trece U (x) și V(y). Exemplu:

plt.quiver(x, y)

Dar când o voi face deci cu Gaussian domeniu, este evident că ceva este greșit, pentru că rezultatul parcele săgețile tot în jurul. Dar când am inversa ordinea de parametri, de exemplu:

plt.quiver(y, x)

Rezultate in aștepta perfect gradient de câmp.

Im greșit(documentare, cod) sau nu este într-adevăr o problemă?

Nu uitați să verificați Google Colab pentru a intelege mai bine acest caz.

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

Cel mai bun răspuns

1

La quiver funcția și documentația aferentă sunt corecte, ai interpretat greșit de ieșire din gradient funcția.

La ieșire, primul array (np.gradient(gaussianMatrix)[0]) este gradientul de-a lungul primei axe (axis=0 = rânduri de matrice), care este axa y în matplotlib și cea de-a doua matrice este pentru a doua axă (axis=1 = coloane din matrice), care este axa x în matplotlib.

Acest lucru este, de asemenea, a explicat în documentație (în secțiunea exemple de după cel de-al treilea exemplu):

Timp de două-dimensional matrice, revenirea va fi de două tablouri comandate de axa. În acest exemplu, prima matrice reprezintă gradientul în rânduri și cel de-al doilea în coloane de direcție:

Pentru a fi în linie cu matplotlib documentația se recomanda folosirea u și v în loc de x și y dacă nu trece săgeata locații ci doar direcții. Deci codul ar trebui să fie:

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

În alte limbi

Această pagină este în alte limbi

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