2015-08-26 5 views
5

Ich versuche eine Linien mit Pfeilspitzen an beiden Enden mit Matplotlib Annotation zu plotten. Aber wenn ich sie plane, beginnen oder enden die Pfeilspitzen nicht an den angegebenen Koordinaten, wie in der Abbildung gezeigt. Die Spitzen sollten bei 0,6 und 0,8 beginnen und enden, tun dies aber nicht.Wie bekomme ich die Pfeilspitze, um an bestimmten Koordinaten in Python zu beginnen/zu enden?

enter image description here

Reproduzierbare Code

import matplotlib.pyplot as plt 
fig = plt.figure(figsize = (5, 5)) 
plt = plt.subplot(111) 
plt.axvline(0.6) 
plt.axvline(0.8) 
plt.axhline(0.6) 
plt.axhline(0.8) 

plt.annotate('', xy = (0.6, 0.33), xycoords = 'axes fraction', \ 
    xytext = (0.8, 0.33), textcoords = 'axes fraction', fontsize = 7, \ 
    color = '#303030', arrowprops=dict(edgecolor='black', arrowstyle = '<->')) 

plt.annotate('', xy = (0.33, 0.6), xycoords = 'axes fraction', \ 
    xytext = (0.33, 0.8), textcoords = 'axes fraction', fontsize = 7, \ 
    color = '#303030', arrowprops=dict(edgecolor='black', arrowstyle = '<->')) 

fig.savefig('arrow_head.pdf') 

Warum geschieht das? Und wie bekommt man die Tipps zum Starten oder Beenden an den jeweiligen Koordinaten?

Antwort

9

Gemäß der Dokumentation here wird der Weg durch die in shrinkA und shrinkB, vermutlich ein wenig Abstand zu schaffen gegebenen Parametern geschrumpft, wenn der Pfeil auf etwas zeigt. Der Standardwert ist 2. Wenn Sie sie auf 0 setzen, sollte der Abstand wegfallen. Wie so:

plt.annotate('', xy = (0.6, 0.33), xycoords = 'axes fraction', \ 
    xytext = (0.8, 0.33), textcoords = 'axes fraction', fontsize = 7, \ 
    color = '#303030', arrowprops=dict(edgecolor='black', arrowstyle = '<->', shrinkA = 0, shrinkB = 0)) 

Graph with lines and arrows

Verwandte Themen