web-dev-qa-db-fra.com

Comment tracer des vecteurs mathématiques 2D avec matplotlib?

Comment tracer des vecteurs mathématiques 2D avec matplotlib? Quelqu'un at-il un exemple ou une suggestion à ce sujet?

J'ai quelques vecteurs stockés sous forme de tableaux 2D numpy, et je voudrais les tracer en tant qu'arêtes dirigées.

Les vecteurs à tracer sont construits comme suit:

import numpy as np
# a list contains 3 vectors;
# each list is constructed as the tail and the head of the vector
a = np.array([[0, 0, 3, 2], [0, 0, 1, 1], [0, 0, 9, 9]]) 

Modifier:

Je viens d'ajouter le tracé de la réponse finale de tcaswell pour toute personne intéressée par la sortie et qui souhaite tracer des vecteurs 2D avec matplotlib: enter image description here

16
pacodelumberg

La suggestion dans les commentaires de halex est correcte, vous voulez utiliser quiver ( doc ), mais vous devez ajuster légèrement les propriétés.

import numpy as np
import matplotlib.pyplot as plt

soa = np.array([[0, 0, 3, 2], [0, 0, 1, 1], [0, 0, 9, 9]])
X, Y, U, V = Zip(*soa)
plt.figure()
ax = plt.gca()
ax.quiver(X, Y, U, V, angles='xy', scale_units='xy', scale=1)
ax.set_xlim([-1, 10])
ax.set_ylim([-1, 10])
plt.draw()
plt.show()
32
tacaswell

C'est assez simple. J'espère que cet exemple vous aidera.

import matplotlib.pyplot as plt
import numpy as np
x = np.random.normal(10,5,100)
y = 3 + .5*x + np.random.normal(0,1,100)
myvec = np.array([x,y])
plt.plot(myvec[0,],myvec[1,],'ro')
plt.show()

Produira:

enter image description here

Pour tracer les tableaux, vous pouvez simplement les découper en vecteurs 1D et les tracer. J'avais lu la documentation complète de matplotlib pour toutes les différentes options. Mais vous pouvez traiter un vecteur numpy comme s'il s'agissait d'un tuple normal pour la plupart des exemples.

0
emhart