2016-05-25 6 views
0

Ich habe versucht, einen Pfeil aus (0.1,0.5) bis (0.5,0.5) in matplotlib basierend auf diesem Beispiel (http://matplotlib.org/examples/pylab_examples/arrow_simple_demo.html) zu zeichnen:Wie funktionieren Pfeilkoordinaten in Matplotlib?

f = plt.figure() 
ax = plt.subplot(2, 1, 1) 
plt.xlim([0, 1]) 
plt.ylim([0, 1]) 
ax.arrow(0.1, 0.5, 0.5, 0.5, 
     head_width=0.05, 
     head_length=0.1, 
     fc='k', 
     ec='k', 
     clip_on=False) 
plt.show() 

dies einen horizontalen Pfeil produzieren sollte, aber aus irgendeinem Grund gibt es ein schräger Pfeil, der nicht endet (0.5,0.5). was ist hier falsch?

Antwort

3

Vom documentation:

matplotlib.pyplot.arrow(x, y, dx, dy, hold=None, **kwargs) 

Fügen Sie einen Pfeil auf die Achsen.

Anruf Signatur:

arrow(x, y, dx, dy, **kwargs) 

Unentschieden Pfeil auf angegebene Achse von (x, y) zu (x + dx, y + dy). Verwendet den FancyArrow-Patch, um den Pfeil zu erstellen.

Also, in Ihrem Pfeil, Sie haben:

x = 0.1, 
y = 0.5, 
dx = 0.5, 
dy = 0.5 

So werden Sie gleich einen Pfeil (0.1,0.5)-(0.6,1.0) ziehen.

Set dy=0 und Sie erhalten einen horizontalen Pfeil. Um einen Pfeil von (0.1,0.5) bis (0.5,0.5) zu erhalten, benötigen Sie:

ax.arrow(0.1, 0.5, 0.4, 0.0, etc...)