Matplotlib pyplot.title(string) returns error

41,841

Solution 1

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.

Solution 2

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 !

Solution 3

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.

Solution 4

Try to reload matplotlib by running the following code:

import matplotlib.pyplot as plt
from importlib import reload
plt=reload(plt)

Good Luck

Solution 5

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.

Share:
41,841

Related videos on Youtube

olben1
Author by

olben1

Updated on April 12, 2022

Comments

  • olben1
    olben1 about 2 years

    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?

    • David Zwicker
      David Zwicker over 10 years
      It works for me on OSX 10.8.5 with Python 2.7.5 and matplotlib 1.3.0. How did you install ipython and matplotlib? Is the above code the only code you evoke? Do you run ipython notebook --pylab or how do you initialize it?
    • tacaswell
      tacaswell over 10 years
      I also can not re-produce this. Do you have a plt.title = 'blah' someplace in your code above this?
    • olben1
      olben1 over 10 years
      I reinstalled matplotlib (pip uninstall then pip install) and all is OK. Before this ?plt.title told me that plt.title was a string. Now it confirms that plt.title is a function. Not sure I undetstand all of it but it's working. Thanks guys.
  • Kickaha
    Kickaha about 8 years
    This should be the accepted answer here... having rewritten the 'title' is the root cause to the probem
  • nanselm2
    nanselm2 almost 7 years
    Same problem - I'm working in Jupyter and once I restarted the kernel I was all set.
  • Olivier de Jonge
    Olivier de Jonge about 5 years
    No kidding. If you previously accidentally assign a string to function it becomes a string??
  • smishra
    smishra over 3 years
    I accidentally assigned the title method to a string and that caused this issue. After restarted the kernel it worked.
  • KBurchfiel
    KBurchfiel about 3 years
    Thank you! I think I made the same mistake, and restarting the kernel solved my problem also.
  • sk shahriar ahmed raka
    sk shahriar ahmed raka about 2 years
    the code is not well organized