简单的matplotlib注释示例不适用于Python 2.7

时间:2013-07-11 07:57:45

标签: python-2.7 matplotlib

代码

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = ax.plot(t, s, lw=2)

ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
            arrowprops=dict(facecolor='black', shrink=0.05),
            )

ax.set_ylim(-2,2)
plt.show()
来自http://matplotlib.org/1.2.0/users/annotations_intro.html

返回

TypeError: 'dict' object is not callable

我用

来修复它
xxx={'facecolor':'black', 'shrink':0.05}
ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
            arrowprops=xxx,
            )

这是最好的方法吗? 是什么原因造成了这个问题(我知道这是从Python 2.7开始的)

所以,如果有人知道更多,请分享。

1 个答案:

答案 0 :(得分:1)

由于代码看起来很好并且在我的机器上运行正常,似乎你可能有一个名为“dict”的变量(参见this answer以供参考)。关于如何检查的一些想法:

  • 使用Pylint
  • 如果您怀疑某个特定内置内容,请尝试检查其类型(type(dict)),或查看其具有的属性/功能(dir(dict))。
  • 打开一个新笔记本,如果您只在交互式会话中观察到问题,请重试。
  • 尝试使用其他语法初始化字典

    ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
        arrowprops={'facecolor':'black', 'shrink':0.05})
    
  • 尝试使用替代语法显式实例化此类型的变量(正如您已经做过的那样)。