我试过下面的代码,但它没有用...... 它说"引发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)
答案 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"))