如何在matplotlib中更改双头注释的头部大小?

时间:2016-03-22 07:49:54

标签: python matplotlib

下图显示了箭头非常小的情节...... enter image description here

我试过下面的代码,但它没有用...... 它说"引发AttributeError('未知属性%s'%k) AttributeError:未知属性headwidth" ...

xyfrom=[10,620]
xyto=[130,620]
ax.annotate("",xyfrom,xyto,arrowprops=dict(arrowstyle='<->',linewidth = 2,     headwidth=10,color = 'k'
))
ax.text((xyto[0]+xyfrom[0])/2-15,(xyto[1]+xyfrom[1])/2+10,"headwidth is too    small",fontsize=24)

2 个答案:

答案 0 :(得分:5)

我相信这是因为你需要在一个字符串中提供你的arrowstyle参数。试试这个:

 arrowprops=dict(arrowstyle='<->, head_width=10', facecolor='k')

,请注意这是一个完整的字符串:

 '<->, head_width=10'

在matplotlib中这是一个非常奇怪的选择,我真的不明白它为什么会这样。无论如何,看看是否解决了你的问题。

答案 1 :(得分:1)

...由于上述答案均不适合我...这是我的解决方案:

使用“ mutation_scale”参数! (请参阅FancyArrowPatch的文档)

import matplotlib.pyplot as plt
f, ax = plt.subplots()

ax.scatter([1,2,3,4,5],[1,2,3,4,5])

ann = ax.annotate(rf'small head annotation',
                  xy=(2,2),  xycoords='data',
                  xytext=(.28, .5), textcoords='figure fraction',
                  size=10, va="center", ha="center",
                  bbox=dict(boxstyle="round4", fc="w"),
                  arrowprops=dict(arrowstyle="-|>",mutation_scale=25,
                                  connectionstyle="arc3,rad=-0.2", fc="w"))

ann2 = ax.annotate(rf'BIG head annotation',
                  xy=(2,2),  xycoords='data',
                  xytext=(.75, .15), textcoords='figure fraction',
                  size=10, va="center", ha="center",
                  bbox=dict(boxstyle="round4", fc="w"),
                  arrowprops=dict(arrowstyle="-|>",mutation_scale=50,
                                  connectionstyle="arc3,rad=-0.2", fc="w"))

 [