2015-07-26 2 views
2

Как показано на рисунке ниже, длина стрелки слишком короткая, она не выглядит красивой, поэтому я хотел бы увеличить длину головы, как указано в графике вручную.Как увеличить длину стрелки в matplotlib?

enter image description here

Конечно, вы можете удлинить стрелку, чтобы понять это, как в этой ссылке: Python annotation arrows with same headlength

Однако, я не хочу, чтобы изменить длину этой стрелки из-за ограниченного пространства в сценарий.

ответ

2

Это можно сделать через fracarrowprops key, что соответствует доле длины стрелы, занимаемой головой. Ниже приводится MWE.

import matplotlib.pyplot as plt 
import numpy as np 

frac_val = 0.1 
for x in np.arange(0.1, 1, 0.2): 

    arrow_props = dict(fc='k', ec='k', frac=frac_val, headwidth=10, width=2, 
         shrink=0.1) 

    text = '%d%%' % (frac_val * 100) 

    plt.annotate(text, xy=(x, 0.9), xytext=(x, 0.2), ha='center', 
       arrowprops=arrow_props) 

    frac_val += 0.1 

plt.show() 

что приводит к:

enter image description here

+0

plt.annotate ('Привет', '% d %%' % (frac_val * 100), ху = (х, 0,9), xytext = (x, 0.2), ha = 'center', arrowprops = arrow_props), но когда я добавляю текст, он не работает ... – user3737702

+0

@ user3737702 Попробуйте это вместо: 'plt.annotate ('hi', xy = (x, 0.9), xytext = (x, 0.2), ha = 'center', arrowprops = arrow_props) ', потому что' '% d %% '% (frac_val * 100)' является текстовым аргументом в моем примере. –

+0

сделать смысл ~ Да !! – user3737702

Смежные вопросы