¿Por qué el matplotlib.pyplot.carcaj estados de documentación de orden incorrecto de la U, V parámetros?

0

Pregunta

Antes de nada, aquí es Google Colab enlace para mostrar el problema: https://colab.research.google.com/drive/1sq8Dn7wdNqbfRmz2SyQnj0MfRirxmneA?usp=sharing

Im usando matplotlib para trazar algunas gradiente de campo generado con:

x,y = numpy.gradient(array_2d)

Y notó algo extraño. La documentación indica que, para la parcela 2d de campo, se necesita pasar de U (x) y V(y). Ejemplo:

plt.quiver(x, y)

Pero cuando lo hago con Gauss campo, es obvio que algo está mal, porque el resultado de las parcelas de las flechas de todo. Pero cuando voy a invertir el orden de los parámetros, por ejemplo:

plt.quiver(y, x)

Resultados de esperar perfecto gradiente de campo.

Im consiguiendo mal(documentación, código) o realmente hay algún problema?

No se olvide de comprobar Google Colab mejor understant el caso.

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

Mejor respuesta

1

El quiver función y su documentación es correcta, sólo interpretan incorrectamente la salida de la gradient la función.

En la salida, el primer array (np.gradient(gaussianMatrix)[0]) es el gradiente a lo largo del primer eje (axis=0 = filas de la matriz), que es el eje y en matplotlib y la segunda matriz para el segundo eje (axis=1 = columnas de la matriz), que es el eje de las x en matplotlib.

Esto también se explica en la documentación (en los ejemplos de la sección después de que el tercer ejemplo):

Para las dos dimensiones de las matrices, la devolución será de dos matrices ordenadas por eje. En este ejemplo la primera matriz representa el gradiente en las filas y la segunda en las columnas de dirección:

Estar en línea con la matplotlib documentación recomiendo el uso de u y v en lugar de x y y si no pasas la flecha lugares, pero sólo las direcciones. Así que el código debe ser:

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

En otros idiomas

Esta página está en otros idiomas

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