2015-08-26 7 views
5

Próbuję narysować linie z głowicami strzałek po obu stronach, używając adnotacji matplotlib. Ale kiedy je wykreślam, końce strzałek nie zaczynają się lub kończą na określonych współrzędnych, jak pokazano na rysunku. Końcówki powinny zaczynać się i kończyć na 0,6 i 0,8, ale nie kończą się.Jak zdobyć końcówki strzałek do rozpoczęcia/zakończenia z określonymi współrzędnymi w Pythonie?

enter image description here

kod Powtarzalne

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

Dlaczego tak się dzieje? I jak uzyskać wskazówki do rozpoczęcia lub zakończenia na odpowiednich współrzędnych?

Odpowiedz

9

Zgodnie z dokumentacją here, ścieżka jest skurczył się o parametrach podanych w shrinkA i shrinkB, przypuszczalnie zapewnić niewielkie odstępy, gdy strzałka wskazuje na coś. Domyślna wartość to 2, więc jeśli ustawisz je na 0, odstępy powinny zniknąć. Tak:

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

Powiązane problemy