【问题标题】:Matplotlib Unknown Property "headwidth" and "head_width"Matplotlib 未知属性“headwidth”和“head_width”
【发布时间】:2015-02-20 07:59:45
【问题描述】:

我正在尝试调整 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

有什么办法吗?

【问题讨论】:

  • 什么是斧头?您在代码中错过了 ax 的定义。
  • 感谢您的提醒!我刚刚添加了它。对丢失的部分感到抱歉!
  • arrowprops=dict(arrowstyle='', facecolor='black',head_width=10) 只是一个普通的字典初始化。不应该有任何错误。我需要你的完整代码来重现问题。
  • 亲爱的 m170897017,它已经是完整的代码了。 T.T

标签: python python-2.7 matplotlib


【解决方案1】:

当您在 arrowprops dict 中指定 arrowstyle 时,您将获得 FancyArrowPatch 而不是 YAArrow 的实例,它采用不同的关键字(但是,鉴于您尝试使用 head_width,您可能知道这一点)。文档中的不直观之处在于,当您指定具有默认头部设置等的箭头样式时,您会在箭头样式字符串中修改这些特定设置。这是文档here(强调我的)中的相关行:

箭头样式描述了精美箭头的绘制方式。它可以是可用箭头样式名称的字符串,带有可选的逗号分隔属性,或者是 ArrowStyle 实例之一。

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

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

请注意,head_width 规范位于样式后面的逗号后面的字符串中。 除此之外: 10 是一个相当大的数字...... 0.5 可能会更好!

【讨论】:

  • 哇,好东西,@Ajean!那是一个微妙的文档!在你指出之前,我无法理解它。现在我可以编辑我的箭头了!谢谢你拯救了我的一天!!!!!!
  • @Ajean 我遇到了与ncolfancybox 类似的错误。我在文档中找不到此信息,我在哪里可以找到有关相关错误的更多信息?
  • @mikey 我想你的意思是ncollegend,因为FancyBboxPatch 没有ncol 这样的关键字,而且我认为从来没有.只需检查legend 的文档并确保您遵循它。如果您仍有问题,请提出新问题。
猜你喜欢
  • 2018-02-16
  • 1970-01-01
  • 2023-01-04
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 2019-03-22
相关资源
最近更新 更多