Matplotlib未知属性"headwidth"和"head_width"

Har*_*wel 6 python matplotlib python-2.7

我为了一个看似简单的问题而全身都在摸不着头脑.我试图调整Matplotlib中箭头的头宽.

这是一个有效的代码:

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'))
Run Code Online (Sandbox Code Playgroud)

带双头箭头的正弦图

如图所示,它绘制了一个漂亮的双头箭头.现在当我想改变头宽时:

ax.annotate('', xy=(1, -1), xytext=(2, 0),
arrowprops=dict(arrowstyle='<->', facecolor='black',headwidth=10))
Run Code Online (Sandbox Code Playgroud)

要么

ax.annotate('', xy=(1, -1), xytext=(2, 0), 
arrowprops=dict(arrowstyle='<->', facecolor='black',head_width=10))
Run Code Online (Sandbox Code Playgroud)

返回的错误是:

AttributeError: Unknown property headwidth
Run Code Online (Sandbox Code Playgroud)

要么

AttributeError: Unknown property head_width
Run Code Online (Sandbox Code Playgroud)

似乎我无法通过Google找到解决这个简单问题的任何资源.有什么出路吗?

非常感谢您的时间和关注!

Aje*_*ean 13

当你arrowstyle在arrowprops dict中指定一个时,你会得到一个FancyArrowPatch而不是YAArrow的实例,它接受不同的关键字(但是,你可能知道在尝试使用时head_width).文档中不直观的是,当您指定具有默认头设置的箭头样式等时,您可以在arrowstyle字符串中修改这些特定设置.这是此处文档中的相关行(强调我的):

arrowstyle描述了如何绘制花式箭头.它可以是可用箭头样式名称的字符串,带有可选的逗号分隔属性,也可以是ArrowStyle实例之一.

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

arrowprops=dict(arrowstyle='<->, head_width=10', facecolor='black')
Run Code Online (Sandbox Code Playgroud)

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

  • 哇很棒,@Ajean!这是一个*微妙*文档!在你指出它之前我无法理解它.现在我可以编辑我的箭了!谢谢你救我的一天!!!!! (3认同)