Saltar al contenido

¿Cómo funciona exactamente matplotlib.pyplot.quiver de Python?

Investigamos por distintos sitios y así brindarte la solución a tu duda, si continúas con dificultades puedes dejarnos tu pregunta y responderemos con mucho gusto.

Solución:

carcaj matplotlib hace escalado automático. Establezca la escala en 1 para obtener sus 0.2 unidades en x an y:

x = np.linspace(0,1,11)
y = np.linspace(1,0,11)
u = v = np.zeros((11,11))
u[5,5] = 0.2

plt.quiver(x, y, u, v, scale=1)

ingrese la descripción de la imagen aquí

Si no configuras scale, matplotlib usa un algoritmo de escalado automático basado en la longitud promedio del vector y la cantidad de vectores. Dado que solo tiene un vector con una longitud mayor que cero, se vuelve realmente grande. Agregar más vectores hace que las flechas sean cada vez más pequeñas.

Para tener extensiones x e y iguales de su flecha, se necesitan algunos ajustes más:

x = np.linspace(0,1,11)
y = np.linspace(1,0,11)
u = v = np.zeros((11,11))
u[5,5] = 0.2

plt.axis('equal')
plt.quiver(x, y, u, v, scale=1, units='xy')

Ambos ejes deben ser iguales y las unidades deben establecerse en xy.

ingrese la descripción de la imagen aquí

No está relacionado con su problema, pero es interesante mencionarlo: lo curioso es que al escribir u[5, 5] = 0.2 tu estas insinuandov[5, 5] = 0.2 también (como se muestra en su flecha diagonal), ya que antes escribió u = v = np.zeros((11, 11)). Podrías evitar eso escribiendo

u = np.zeros((11, 11))
v = np.zeros((11, 11))

para hacer u y v independientes unos de otros.

La función quiver visualiza un campo vectorial, como este:

ejemplo de diagrama de carcaj

(de la página de ejemplos). En este tipo de gráfico, el vector en un punto representa la magnitud del vector de campo en ese punto. Por ejemplo, si está visualizando la velocidad de un fluido, la longitud de la flecha representa la velocidad del fluido.

Puede pensar en un campo vectorial como una función que mapea la entrada (posición) a la salida (el vector, por ejemplo, la velocidad). Los valores de salida no tienen relación con las posiciones de entrada; en particular, ¡es posible que ni siquiera se midan en las mismas unidades! Por lo tanto, un diagrama de carcaj solo puede mostrar el pariente magnitud del campo en diferentes puntos: solo las longitudes relativas de las flechas son significativas, no sus longitudes absolutas.

En otras palabras, no debe esperar que un valor de campo de 0,2 esté representado por una flecha de longitud 0,2 en unidades de datos.

Sin embargo, matplotlib proporciona una opción que puede especificar para hacer eso: el scale_units opción a quiver. De acuerdo con la documentación, puede dar scale_units = 'xy' y representará las longitudes de flecha usando las mismas unidades que los ejes.

Te mostramos reseñas y puntuaciones

Agradecemos que desees añadir valor a nuestra información dando tu veteranía en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *