如何在matplotlib注释中更改箭头样式?

时间:2016-07-31 13:49:19

标签: python numpy matplotlib

我想更改注释(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':'->'})

enter image description here

问题

我尝试将箭头类型与第一个注释中的其他属性一起设置为:

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

为什么不起作用?

如何更改注释的箭头样式?

Related question

我正在使用:

python:3.4.3 + numpy:1.11.0 + matplotlib:1.5.1

1 个答案:

答案 0 :(得分:1)

matplotlib documentation开始,“如果字典具有关键箭头样式,则使用给定字典创建FancyArrowPatch实例并绘制。否则,将创建并绘制YAArrow补丁实例。”

正如您在同一链接中所看到的,shrinkYAArrow的有效密钥,但不是FancyArrowPatch的有效密钥。