1

代码

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 开始的)

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

4

1 回答 1

1

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

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

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

于 2013-07-15T07:56:17.923 回答