Pourquoi le matplotlib.pyplot.carquois états de documentation incorrecte de l'ordre de U, V paramètres?

0

La question

Avant toute chose, voici Google Colab lien pour montrer le problème: https://colab.research.google.com/drive/1sq8Dn7wdNqbfRmz2SyQnj0MfRirxmneA?usp=sharing

Im en utilisant matplotlib pour tracer certaines gradient de champ générées avec:

x,y = numpy.gradient(array_2d)

Et il a remarqué une chose étrange. La Documentation indique que pour l'intrigue 2d champ, vous devez passer U (x) et V(y). Exemple:

plt.quiver(x, y)

Mais quand je le fais avec Gaussien domaine, il est évident que quelque chose est faux, parce que les tracés des flèches tout autour. Mais quand j'ai inverser l'ordre des paramètres, par exemple:

plt.quiver(y, x)

Les résultats à attendre parfait champ de gradient.

Im se tromper(documentation, code) ou il y a vraiment un problème?

N'oubliez pas de consulter Google Colab pour mieux comprendre le cas.

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

La meilleure réponse

1

L' quiver fonction et sa documentation sont corrects, vous avez juste mal interprété la sortie de la gradient fonction.

Dans la sortie, le premier tableau (np.gradient(gaussianMatrix)[0]) est le gradient le long du premier axe (axis=0 = lignes de la matrice), qui est l'axe des y dans matplotlib et le deuxième tableau est pour le deuxième axe (axis=1 = colonnes de la matrice), qui est l'axe des x dans matplotlib.

C'est aussi expliqué dans la documentation (dans les exemples de la section après le troisième exemple):

Pour les deux dimensions des tableaux, le retour sera deux tableaux commandés par de l'axe. Dans cet exemple, le premier tableau représente le gradient dans les lignes et la deuxième, dans les colonnes de direction:

Pour être en ligne avec le matplotlib de la documentation, je recommande d'utiliser u et v au lieu de x et y si vous ne passez pas l'emplacement de la flèche, mais seulement les directions. Ainsi, votre code doit être:

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

Dans d'autres langues

Cette page est dans d'autres langues

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