2012-09-04 17 views
15

2B matematik vektörlerini matplotlib ile nasıl çizebiliriz? Bunun hakkında bir örnek veya öneri var mı?Matplotlib ile 2d matematik vektörleri nasıl çizilir?

2D numpy dizileri olarak saklanan birkaç vektörüm var ve bunları yönlendirilmiş kenarlar olarak çizmek istiyorum.

çizilecek vektörler aşağıda inşa edilir:

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]]) 

Düzenleme: Ben sadece çıkış ilgilenen herkes için tcaswell nihai cevabın arsa eklendi

ve 2d vektörlerini matplotlib ile çizmek istiyorum: enter image description here

+0

Bir vektör alanını "titreme" ile çizmek mi istiyorsunuz? http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.quiver – halex

+0

örnekler oldukça iyi koleksiyon var proje sitesinde (kodla!): http://matplotlib.sourceforge.net/examples /index.html, bir titreme demo dahil: http://matplotlib.sourceforge.net/examples/pylab_examples/quiver_demo.html @halex ve en abought, sizin örnekler ;-) için teşekkürler, şeydir isterdim – abought

+0

o bireysel vektörleri çizmek için. Netleştirmek için bir kod ekledim. – pacodelumberg

cevap

30

Haex'in yorumlarındaki öneri doğrudur, titremeyi kullanmak istersiniz (doc), ancak özellikleri biraz değiştirmeniz gerekir.

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() 
+0

Bu gerçekten harika görünüyor, teşekkürler. – pacodelumberg

+0

Yıldız işareti ne yapar? (satır 4'te zip yapmak için çağrı içinde) –

+1

Yıldız işaretiyle fermuarın açılması fermuarın açılması içindir! https://docs.python.org/3/library/functions.html#zip –

1

Oldukça basit. Umarım bu örnek yardımcı olur.

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() 

üretecektir:

enter image description here

sadece 1D vektörlere onları dilim ve onları çizebilirsiniz dizileri çizdirmek için. Tüm farklı seçenekler için matplotlib'in tüm belgelerini okudum. Ancak numpy vektörü, çoğu örnek için normal bir tuple gibi davranabilir.

+0

Cevabınız için teşekkürler, oklar olarak matematik vektörleri (yönlendirilmiş kenarlar) kastediyorum. – pacodelumberg

+0

Ahh, üzgünüm, sadece sayıların bir vektörünü kastettiğini sanmıştım. Bir kod örneği verebilir misiniz? – emhart

+0

np, Vektör tanımı için basit bir kod parçası ekledim. – pacodelumberg

İlgili konular