Strange error with matplotlib axes labels
Solution 1:
I had this same issue when working in iPython notebook.
I think it can be re-created as follows:
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
Re-starting the kernel or re-importing the libraries restores plt.ylabel to a function.
Solution 2:
EDIT: This code works fine for clean runs, but you might have changed ylabel
, in which case restarting should fix it, as @wolfins answered (check that answer).
I'm afraid I can't tell you what's going wrong because it works fine here. The below code runs without error and shows the plot with correct label.
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()
If that doesn't work for you, perhaps you can try using figure and axes objects, like this
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()
Doesn't solve the underlying problem (which is hard since I can't reproduce it), but maybe it will achieve your purpose at least.
Solution 3:
I just had this happen to me. It seems that what I did was assign a string to xlab and ylab like:
plt.xlab = 'string'
plt.ylab = 'string'
This broke the xlab and ylab such that you cannot call them anymore, since they are now in fact strings, not functions.
Similarly, I was using Jupyter, and I had to kill Jupyter and re-run it from scratch to fix this problem.
Oddly, re-importing the libraries while the kernal remained running did NOT work.
Solution 4:
This usually Happens, if you assign the Xlabel value instead calling . ex: if you want to set the Xlabel to "X-DUMMY". you need to use
plt.xlabel("X-DUMMY")
but by mistake if you do as below.
plt.xlabel= "X-DUMMY"
you will get this error . Even if you correct it saying .
plt.xlabel("X-DUMMY")
This issue repeats unless you restart you restart the kernal .
reason being, plt.xlabel is a function. in python functions are first-class objects.once you assigned
plt.xlabel= "X-DUMMY"
it get converted to a string. later when ever you try, it throws error as
'TypeError: 'str' object is not callable'.
you can try it by using type(plt.xlabel)
before and after assignment. to see its datatype.
Solution 5:
I saved the checkpoint and halted the ipython notebook. Then I restarted it which solved the problem.