在图区域绘制带有锐边的箭头

时间:2014-11-20 23:18:02

标签: matplotlib

我在python 2.7中使用matplotlib。我想在轴外的图形区域创建一个箭头。

from matplotlib.pyplot import *

fig = figure()
ax1 = fig.add_axes([.1,.1,.6,.8])

ax1.annotate('',xy=(.8,.92),xycoords='figure fraction',xytext=(.8,.1)
             arrowprops=dict(arrowstyle='->',fc='k',lw=10))

ax2 = fig.add_axes([.85,.1,.1,.8])
ax2.spines['top'].set_visible(False)
ax2.spines['bottom'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax2.spines['right'].set_visible(False)
ax2.tick_params(axis='both',which='both',
                top='off',right='off',left='off',bottom='off',
                labeltop='off',labelright='off',labelleft='off',labelbottom='off')

ax2.patch.set_facecolor('None')

ax2.set_xlim(0,1)
ax2.set_ylim(0,1)
ax2.arrow(.5,0,0,1,fc='k',ec='k',head_width=.25,
          head_length=.05,width=.15,length_includes_head=True)    
show()

使用

ax1.annotate(...)

给了我一个'模糊'的箭头。我可以弄清楚如何获得更好看的箭头的唯一方法是创建另一个轴,仅用于添加箭头和使用

ax2.arrow(...)

(网站不会让我发布图片,但复制并粘贴代码,你会看到我在说什么) 尽管如此,还是有更好的方法来做到这一点......

1 个答案:

答案 0 :(得分:0)

我认为改变箭头风格会有所帮助。例如,将其从'simple'更改为'->'可获得更好看的箭头。您可以通过使用mutation_scale来更改宽度。例如,

ax1.annotate('',xy=(.8,.92),xycoords='figure fraction',xytext=(.8,.1),
    arrowprops=dict(arrowstyle="simple",fc="k", ec="k",mutation_scale=30))

这是您的脚本,上面的simple箭头用蓝色绘制。请注意,黑色箭头与->的{​​{1}}箭头的差异。

annotate

enter image description here