我正在尝试在Matplotlib中调整箭头的headwidth

这是一个工作代码:

import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0,2*np.pi,500)
y = np.sin(t)

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)
ax.plot(t,y)

ax.annotate('', xy=(1, -1), xytext=(2, 0),
arrowprops=dict(arrowstyle='<->', facecolor='black'))

并绘制了一个漂亮的双向箭头,如图所示。现在,当我想通过以下方式更改headwidth时:
ax.annotate('', xy=(1, -1), xytext=(2, 0),
arrowprops=dict(arrowstyle='<->', facecolor='black',headwidth=10))

或者
ax.annotate('', xy=(1, -1), xytext=(2, 0),
arrowprops=dict(arrowstyle='<->', facecolor='black',head_width=10))

返回的错误是:
AttributeError: Unknown property headwidth

或者
AttributeError: Unknown property head_width

有没有出路?

最佳答案

当在arrowprops字典中指定arrowstyle时,您将获得FancyArrowPatch而不是YAArrow的实例,后者使用不同的关键字(但是,您可能已经知道尝试使用head_width)。从文档中直觉的是,当您指定具有默认头部设置等的arrowstyle时,可以在arrowstyle字符串中修改这些特定设置。这是文档here(强调我的)中的相关行:



如果将字典更改为以下内容,它将起作用:

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

请注意,head_width规范位于样式后面逗号后的字符串中。 除了: 10对于那个人来说是一个相当大的数字.... 0.5可能更好!

关于python - Matplotlib未知属性 “headwidth”和 “head_width”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27598976/

10-09 18:05