我想更改注释(matplotlib
)中箭头的头部,但与shrink
等其他属性一起使用时,它不起作用。它似乎通过查看参数集来改变创建的对象的类型。
示例
以下代码显示了两种类型的注释箭头。
import matplotlib.pyplot as plt
import numpy as np
xx = np.linspace(0,8)
yy = np.sin(xx)
fig, ax = plt.subplots(1,1, figsize=(8,5))
ax.plot(xx,yy)
ax.set_ylim([-2,2])
ax.annotate( 'local\nmax', xy=(np.pi/2, 1), xytext=(1,1.5), ha='center', \
arrowprops={'shrink':0.05})
ax.annotate( 'local\nmin', xy=(np.pi*3/2, -1), xytext=(5,0), ha='center', \
arrowprops={'arrowstyle':'->'})
问题
我尝试将箭头类型与第一个注释中的其他属性一起设置为:
ax.annotate( 'other\nmax', xy=(np.pi*5/2, 1), xytext=(7,1.5), ha='center', \
arrowprops={'arrowstyle':'->', 'shrink':0.05})
但是,该行会引发错误:
AttributeError: Unknown property shrink
为什么不起作用?
如何更改注释的箭头样式?
我正在使用:
python:3.4.3 + numpy:1.11.0 + matplotlib:1.5.1
答案 0 :(得分:1)
从matplotlib documentation开始,“如果字典具有关键箭头样式,则使用给定字典创建FancyArrowPatch实例并绘制。否则,将创建并绘制YAArrow补丁实例。”
正如您在同一链接中所看到的,shrink
是YAArrow
的有效密钥,但不是FancyArrowPatch
的有效密钥。