2012-12-18 14 views
5

Chcę wykreślić strzały z matplotlib, aby każda grot strzały była takiego samego rozmiaru, niezależnie od rzeczywistej wielkości strzały.Groty strzały o równej wielkości w matplotlib

Przykłady:

Strzałki jest narysowany matplotlib.pyplot.Arrow():

# p is the point of origin, pdiff the direction   
arr = plt.Arrow(p[0], p[1], pdiff[0], pdiff[1], fc=color, width=0.4) 
plt.gca().add_patch(arr) 
+2

można wyświetlić kod gdzie jesteś rzeczywiście rysunek strzałki? – mgilson

Odpowiedz

5

Masz na myśli pylab.arrow (lub FancyArrow), możesz określić head_width i head_length, więc nie są one względne w stosunku do wielkości strzałki. Oto przykład:

import math 
import pylab 

pylab.plot(range(11), range(11)) 

opt = {'head_width': 0.4, 'head_length': 0.4, 'width': 0.2, 
     'length_includes_head': True} 
for i in xrange(1, 360, 20): 
    x = math.radians(i)*math.cos(math.radians(i)) 
    y = math.radians(i)*math.sin(math.radians(i)) 

    # Here is your method.  
    arr = pylab.Arrow(4, 6, x, y, fc='r', alpha=0.3) 
    pylab.gca().add_patch(arr) 

    # Here is the proposed method. 
    pylab.arrow(4, 6, x, y, alpha=0.8, **opt) 

pylab.show() 

która produkuje:

enter image description here

+0

To całkiem niezły przykład! –

Powiązane problemy