我对Python和编程非常陌生,如果我遗漏了一些明显的东西,请提前道歉。我正在尝试绘制图形并标记轴,但每次我尝试标记y轴时都会引发异常。我在新脚本中编写了下面的代码,以确保问题不是来自模块中的其他位置。我正在使用Python 3.4。
from numpy import *
from matplotlib import *
a = [1, 2, 3, 4, 5]
b = [2, 3, 2, 3, 2]
pyplot.plot(a, b)
pylab.xlabel("Time")
pylab.ylabel("Speed")
每次,我得到错误'TypeError:'str'对象不可调用'作为最后一行。如果我将y更改为x,一切都很好。如果我将x更改为y,我会得到相同的错误。但是,ylabel出现在ylabel的下拉列表中,因此函数确实存在,文档说字符串是唯一必要的参数,与xlabel完全相同(matplotlib.pyplot.ylabel(s,* args,** kwargs)和matplotlib.pyplot.xlabel(s,* args,** kwargs))。到底是怎么回事?
答案 0 :(得分:88)
在iPython笔记本中工作时遇到同样的问题。
我认为可以按如下方式重新创建:
import matplotlib.pyplot as plt
plt.ylabel = 'somestring' # oh wait this isn't the right syntax.
...
plt.ylabel('somestring') # now this breaks because the function has been turned into a string
重新启动内核或重新导入库会将plt.ylabel恢复为函数。
答案 1 :(得分:7)
编辑:此代码适用于干净运行,但您可能已更改ylabel
,在这种情况下,重新启动应修复它,如@wolfins answered (check that answer)。
我担心我无法告诉你出了什么问题,因为它在这里运作正常。以下代码运行时没有错误,并显示带有正确标签的图。
from matplotlib import pyplot, pylab
a = [1, 2, 3, 4, 5]
b = [2, 3, 2, 3, 2]
pyplot.plot(a, b)
pylab.xlabel("Time")
pylab.ylabel("Speed")
pyplot.show()
如果这对您不起作用,也许您可以尝试使用图形和轴对象,例如
from matplotlib.pyplot import subplots, show
a = [1, 2, 3, 4, 5]
b = [2, 3, 2, 3, 2]
fig, ax = subplots()
ax.plot(a, b)
ax.set_xlabel("Time")
ax.set_ylabel("Speed")
show()
没有解决潜在的问题(这很难,因为我无法重现它),但它可能至少会实现你的目的。
答案 2 :(得分:5)
我刚刚发生了这件事。 似乎我所做的是将字符串分配给xlab和ylab,如:
plt.xlab = 'string'
plt.ylab = 'string'
这破坏了xlab和ylab,使你不能再调用它们,因为它们现在实际上是字符串,而不是函数。
同样地,我正在使用Jupyter,我不得不杀死Jupyter并从头开始重新运行以解决这个问题。
奇怪的是,当内核仍在运行时重新导入库 NOT 工作。
答案 3 :(得分:3)
我保存了检查点并暂停了ipython笔记本。然后我重新启动它解决了这个问题。
答案 4 :(得分:3)
如果分配Xlabel值而不是调用,通常会发生这种情况。 例如:如果要将Xlabel设置为“ X-DUMMY”。您需要使用
plt.xlabel("X-DUMMY")
但是如果您执行以下操作,则会出错。
plt.xlabel= "X-DUMMY"
您将收到此错误。即使您改正说的话。
plt.xlabel("X-DUMMY")
除非重新启动内核,否则将重复出现此问题。
原因是,plt.xlabel是一个函数。 python函数中是一流的对象。一旦您分配了
plt.xlabel= "X-DUMMY"
将其转换为字符串。以后,无论何时尝试,它都会引发错误
“ TypeError:'str'对象不可调用”。
您可以在分配之前和之后使用type(plt.xlabel)
进行尝试。查看其数据类型。
答案 5 :(得分:1)
我在jupyter笔记本中也遇到了同样的问题,因此,如果您太过面对问题,只需重新启动内核即可解决该问题,那么代码中就不会有语法错误。
答案 6 :(得分:-1)
如果你在胜利,可能你没有安装正确版本的matplotlib
你需要注意你拥有哪个版本的python以及你需要在你的计算机上使用的matplotlib版本
下载:https://pypi.python.org/pypi/matplotlib/ 对于Windows用户:python -m pip install --user matplotlib-2.1.0-cp36-cp36m-win_amd64.whl
在文件名中你将cp36 == python 3.6,cp27 == python 2.7,总是首先检查你在电脑上有哪个版本的python
答案 7 :(得分:-1)
这可能会帮助您:
# 0. Import matplotlib and get it ready
%matplotlib inline
import matplotlib.pyplot as plt
# 1. Prepare data
x = [1,2,3,4]
y = [10,20,30,40]
# 2. Setup plot
fig, ax = plt.subplots(figsize=(8,8)) # width & height
# 3. Plot the data
ax.plot(x,y)
# 4. Customize Plot
ax.set(title="Simple Plot",
xlabel="X - Put your X label TITLE here",
ylabel="Y - Put your y label TITLE here")
# 5. Display
plt.show()