Matplotlib pyplot.title(string) returns error
When I call pyplot.title('some string')
it throws the exception, 'str' object is not callable'
.
I copied the following from the matplotlib online documentation:
mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)
# the histogram of the data
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='g', alpha=0.75)
plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title('Histogram of IQ')
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()
and get
TypeError Traceback (most recent call last)
<ipython-input-158-40fe7a831b06> in <module>()
8 plt.xlabel('Smarts')
9 plt.ylabel('Probability')
---> 10 plt.title('Histogram of IQ')
11 plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
12 plt.axis([40, 160, 0, 0.03])
TypeError: 'str' object is not callable
pyplot.suptitle()
works OK
I'm using python 2.7.5 and the latest release of matplotlib on an iMac with an I7 processor OSX 10.8 and 8 gig ram and ipython notebook.
Does anyone know what's going on?
It happened to me because I tried to do plot.title = "Some string"
so that rewrote the title()
method. That's the exact reason why it happens :) .
As others have said you just need to restart the kernel, no need to reinstall.
I had the same problem. The code was fine, but in the interpreter, I had previoulsy used incorrect xlabel() calls. re-starting the interpreter (close and reopen it) was enough for me, no need to reinstall all python/matplotlib !
I've had this happen when I've previously accidentally plt.title = ''
After that that function is no longer a function. Restarting python kernel or re-importing plt library can fix it.
Not re-installing. Re-IMPORTING.
Try to reload matplotlib by running the following code:
import matplotlib.pyplot as plt
from importlib import reload
plt=reload(plt)
Good Luck
No need to Reinstall any libraries. To overcome the issue, you can just restart the Jupyter kernel. This happens when you set plt.title = 'something'. It overrides the PyPlot functions and make them inaccessible. Restarting the kernel will help you out.