2015-08-26 9 views
5

Matplotlib'in açıklamasını kullanarak her iki ucunda ok başı bulunan bir çizgi çizmeye çalışıyorum. Fakat onları çizdiğimde, ok başı ipuçları, şekilde gösterildiği gibi belirtilen koordinatlarda başlamıyor veya bitmiyor. Uçlar 0,6 ve 0,8'de başlamalı ve bitmelidir, ancak yapmazlar.Python'da belirtilen koordinatlarda ok başı ipucu nasıl başlatılır/sonlandırılır?

enter image description here

tekrarlanabilir kod

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

Bunun nedeni nedir? Ve ilgili koordinatlarda başlamak veya bitmek için ipuçları nasıl?

cevap

9

belgelerine here göre, yol ok şeyi hedeflemeyi zaman muhtemelen biraz aralık sağlamak için, shrinkA ve shrinkB verilen parametreler tarafından büzülür. Varsayılan değer 2'dir, bu yüzden 0 olarak ayarlarsanız, boşluk gitmelidir. böylece gibi:

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