nep*_*e36 42 python axes matplotlib
我对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")
Run Code Online (Sandbox Code Playgroud)
每次,我得到错误'TypeError:'str'对象不可调用'为最后一行.如果我将y更改为x,一切都很好.如果我将x更改为ay,我会得到相同的错误.但是,ylabel出现在ylabel的下拉列表中,所以函数确实存在,文档说字符串是唯一必要的参数,与xlabel完全相同(matplotlib.pyplot.ylabel(s,*args,**kwargs)和matplotlib.pyplot.xlabel(s,*args,**kwargs)).到底是怎么回事?
wol*_*ins 112
在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
Run Code Online (Sandbox Code Playgroud)
重新启动内核或重新导入库会将plt.ylabel恢复为函数.
编辑:此代码适用于干净运行,但您可能已更改ylabel,在这种情况下重新启动应修复它,因为@wolfins 回答(检查答案).
我担心我不能告诉你出了什么问题,因为它在这里工作得很好.以下代码运行时没有错误,并显示带有正确标签的图.
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()
Run Code Online (Sandbox Code Playgroud)
如果这对您不起作用,也许您可以尝试使用图形和轴对象,就像这样
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()
Run Code Online (Sandbox Code Playgroud)
没有解决潜在的问题(这很难,因为我无法重现它),但也许它至少会实现你的目的.
小智 7
我发生了这件事.似乎我所做的是将字符串分配给xlab和ylab,如:
plt.xlab = 'string'
plt.ylab = 'string'
Run Code Online (Sandbox Code Playgroud)
这打破了xlab和ylab,因此你不能再调用它们,因为它们现在实际上是字符串,而不是函数.
同样地,我正在使用Jupyter,我不得不杀死Jupyter并从头开始重新运行以解决这个问题.
奇怪的是,重新导入库,而籽粒仍然运行没有不工作.
小智 6
这通常会发生,如果您分配 Xlabel 值而不是调用 . 例如:如果您想将 Xlabel 设置为“X-DUMMY”。你需要使用
plt.xlabel("X-DUMMY")
Run Code Online (Sandbox Code Playgroud)
但如果你按照下面的方式做,就会出错。
plt.xlabel= "X-DUMMY"
Run Code Online (Sandbox Code Playgroud)
你会得到这个错误。即使你纠正它说。
plt.xlabel("X-DUMMY")
Run Code Online (Sandbox Code Playgroud)
除非您重新启动内核,否则此问题会重复出现。
原因是, plt.xlabel 是一个函数。在 python 函数中是一流的对象。一旦你分配
plt.xlabel= "X-DUMMY"
Run Code Online (Sandbox Code Playgroud)
它被转换为字符串。稍后当你尝试时,它会抛出错误
'TypeError: 'str' 对象不可调用'。
您可以通过使用type(plt.xlabel)before 和 after assignment来尝试。查看它的数据类型。
| 归档时间: |
|
| 查看次数: |
36116 次 |
| 最近记录: |