olben1
olben1

Reputation: 581

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?

Upvotes: 57

Views: 62502

Answers (13)

thumssypn
thumssypn

Reputation: 1

This issue is not only with plt.title() but also with plt.xlabel() and plt.ylabe(). To solve this issue you need to add:

%matplotlib inline

at the time of importing. this is to enable the addition of codes on the go. Then add the code:

import matplotlib.pyplot as plt

from importlib import reload

plt = reload(plt)

Then write the rest of the code.

Upvotes: 0

Ayush Shajin
Ayush Shajin

Reputation: 1

Just restart the kernel. It works. Worked for me.

Upvotes: -1

prajapati keyur
prajapati keyur

Reputation: 21

  1. Restart your kernel

  2.  plt.suptitle("title name") 
    
  3. import matplotlib.pyplot as plt
    from importlib import reload
    plt=reload(plt)
    

Upvotes: 2

Biplab Roy
Biplab Roy

Reputation: 42

I experienced the same problem after removing the line

%matplotlib inline

and Restarting the notebook again solved my problem.

Upvotes: 1

crispengari
crispengari

Reputation: 9321

Try to reload matplotlib by running the following code:

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

Good Luck

Upvotes: 12

shekhar chander
shekhar chander

Reputation: 618

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.

Upvotes: 4

Rashmi Ranjan Swain
Rashmi Ranjan Swain

Reputation: 1

plt.title('xyz') :'str' object is not callable.

just give a restart of your terminal/ide. That ll fix the issue .

Upvotes: 0

mansoor.khan
mansoor.khan

Reputation: 2616

I encountered the same problem where I wrote plt.title = "This is a sample plot" instead of plt.title("This is a sample plot"). I was getting the error:

typeerror 'str' object is not callable

Restarting the Spyder IDE fixed the issue for me.

Upvotes: 5

alofgran
alofgran

Reputation: 477

Without restarting, I've found that changing to a .set_title() method following my plotting method has resulted in a successful pass without an error.

Upvotes: 2

Jonathan Anderson
Jonathan Anderson

Reputation: 141

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.

Upvotes: 14

steven2308
steven2308

Reputation: 2521

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.

Upvotes: 133

Fran&#231;ois Landes
Fran&#231;ois Landes

Reputation: 758

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 !

Upvotes: 30

user3178165
user3178165

Reputation: 11

Had the same problem olben1, using ipython, anaconda and the --pylab flag. Reinstalled and it worked. Fwiw, using an anaconda env makes the uninstall/reinstall easier..

Upvotes: 1

Related Questions