16

When trying to plot a graph with pyplot I am running the following code:

from matplotlib import pyplot as plt

x = [6, 5, 4]
y = [3, 4, 5]

plt.plot(x, y)
plt.show()

This is returning the following error:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-3-59955f73b463> in <module>()
      4 y = [3, 4, 5]
      5 
----> 6 plt.plot(x, y)
      7 plt.show()

/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.pyc in plot(*args, **kwargs)
   3304 @_autogen_docstring(Axes.plot)
   3305 def plot(*args, **kwargs):
-> 3306     ax = gca()
   3307     # Deprecated: allow callers to override the hold state
   3308     # by passing hold=True|False

/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.pyc in gca(**kwargs)
    948     matplotlib.figure.Figure.gca : The figure's gca method.
    949     """
--> 950     return gcf().gca(**kwargs)
    951 
    952 # More ways of creating axes:

/usr/local/lib/python2.7/site-packages/matplotlib/figure.pyc in gca(self, **kwargs)
   1367 
   1368         # no axes found, so create one which spans the figure
-> 1369         return self.add_subplot(1, 1, 1, **kwargs)
   1370 
   1371     def sca(self, a):

/usr/local/lib/python2.7/site-packages/matplotlib/figure.pyc in add_subplot(self, *args, **kwargs)
   1019                     self._axstack.remove(ax)
   1020 
-> 1021             a = subplot_class_factory(projection_class)(self, *args, **kwargs)
   1022 
   1023         self._axstack.add(key, a)

/usr/local/lib/python2.7/site-packages/matplotlib/axes/_subplots.pyc in __init__(self, fig, *args, **kwargs)
     71 
     72         # _axes_class is set in the subplot_class_factory
---> 73         self._axes_class.__init__(self, fig, self.figbox, **kwargs)
     74 
     75     def __reduce__(self):

/usr/local/lib/python2.7/site-packages/matplotlib/axes/_base.pyc in __init__(self, fig, rect, facecolor, frameon, sharex, sharey, label, xscale, yscale, axisbg, **kwargs)
    527 
    528         # this call may differ for non-sep axes, e.g., polar
--> 529         self._init_axis()
    530         if axisbg is not None and facecolor is not None:
    531             raise TypeError('Both axisbg and facecolor are not None. '

/usr/local/lib/python2.7/site-packages/matplotlib/axes/_base.pyc in _init_axis(self)
    620     def _init_axis(self):
    621         "move this out of __init__ because non-separable axes don't use it"
--> 622         self.xaxis = maxis.XAxis(self)
    623         self.spines['bottom'].register_axis(self.xaxis)
    624         self.spines['top'].register_axis(self.xaxis)

/usr/local/lib/python2.7/site-packages/matplotlib/axis.pyc in __init__(self, axes, pickradius)
    674         self._minor_tick_kw = dict()
    675 
--> 676         self.cla()
    677         self._set_scale('linear')
    678 

/usr/local/lib/python2.7/site-packages/matplotlib/axis.pyc in cla(self)
    758         self._set_artist_props(self.label)
    759 
--> 760         self.reset_ticks()
    761 
    762         self.converter = None

/usr/local/lib/python2.7/site-packages/matplotlib/axis.pyc in reset_ticks(self)
    769         # define 1 so properties set on ticks will be copied as they
    770         # grow
--> 771         cbook.popall(self.majorTicks)
    772         cbook.popall(self.minorTicks)
    773 

AttributeError: 'module' object has no attribute 'popall'

My matplotlib has always worked fine, but this error popped up after I reinstalled it using homebrew and pip yesterday. I am running the following:

OS: Mac OS Sierra 10.12.5
Python: 2.7.13
Matplotlib: 2.0.2

I have tried a complete reinstall of matplotlib and python again since but still getting the same error. I have also tried multiple editors (Jupiter, Sublime, Terminal).

Any help would be very appreciated!

3
  • 1
    Odd, popall has existed in the matplotlib.cbook module for a long time. Do you happen to have a file called cbook.py in your local directory that is being read by mistake? Commented May 24, 2017 at 11:05
  • 1
    I have no file called cbook.py other than in the matplotlib folder. I have opened it up and popall is defined there. I do have two matplotlib folders though one is located in /usr/local/lib/python2.7/site-packages/matplotlib and the other in /usr/local/Cellar/matplotlib. I have tried removing the the first as I was expecting everything to come from the Cellar. Could this mean its potentially a PATH issue? My homebrew .bash_profile path is: export PATH=/usr/local/bin:/usr/local/sbin:$PATH . Thanks very much for the reply. Commented May 24, 2017 at 11:24
  • 1
    not sure then, sorry. You could try importing matplotlib.cbook in a python session, and checking (a) where its being imported from, and (b) if it has the popall function Commented May 24, 2017 at 11:40

3 Answers 3

18

I had this exact error and in my case it turned out to be that both pip and conda had installed copies of matplotlib. In a 'mixed' environment with pip used to fill gaps in Anaconda, pip can automatically install upgrades to (already-installed) dependencies of the package you asked to install, creating duplication.

To test for this:

$ conda list matplotlib
# packages in environment at /home/ec2-user/anaconda3:
# 
matplotlib                2.0.2               np113py35_0
matplotlib                2.1.1                     <pip>

Problem! Fix:

$ pip uninstall matplotlib

Probably a good idea to force matplotlib upgrade to the version pip wanted:

$ conda install matplotlib=2.1.1
Sign up to request clarification or add additional context in comments.

1 Comment

(+1) - I also had to specify the channel to get the version I required: conda install -c anaconda matplotlib
4

I have solved my problem although I am not entirely sure why this has solved it.

I used pip uninstall matplotlib, to remove the python install, and also updated my ~/.zshrc and ~/.bash_profile paths to contain:

HomeBrew:

export PATH=/usr/local/bin:$PATH

Python:

export PATH=/usr/local/share/python:$PATH

This has solved the issue. I am guessing the issue was caused by having two install of matplotlib and having the path in ~/.bash_proile but not the ~/.zshrc.

Comments

3

I have had a similar kind of problem what I did was trying to upgrade my matplotlib using

pip install -U matplotlib

and then reopen anaconda to see it working

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.