web-dev-qa-db-fra.com

Matplotlib AttributeError: l'objet 'module' n'a pas d'attribut 'popall'

En essayant de tracer un graphique avec pyplot, je lance le code suivant:

from matplotlib import pyplot as plt

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

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

Cela renvoie l'erreur suivante:

---------------------------------------------------------------------------
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'

Mon matplotlib a toujours bien fonctionné, mais cette erreur est apparue après que je l’aie réinstallée avec homebrew et pip hier. J'exécute ce qui suit:

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

J'ai essayé à nouveau une réinstallation complète de matplotlib et de python, mais j'obtiens toujours la même erreur. J'ai également essayé plusieurs éditeurs (Jupiter, Sublime, Terminal).

Toute aide serait très appréciée! 

13
D.Griffiths

J'ai résolu mon problème bien que je ne sois pas tout à fait sûr pourquoi cela l'a résolu. 

J'ai utilisé pip uninstall matplotlib pour supprimer l'installation Python et j'ai également mis à jour mes chemins ~/.zshrc et ~/.bash_profile afin qu'ils contiennent:

HomeBrew:

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

Python:

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

Cela a résolu le problème. Je suppose que le problème a été causé par deux installations de matplotlib et le chemin dans ~/.bash_proile mais pas le ~/.zshrc

3
D.Griffiths

J'ai eu cette erreur exacte et dans mon cas, il s'est avéré que pip et conda avaient installé des copies de matplotlib. Dans un environnement «mixte» avec pip utilisé pour combler les lacunes dans Anaconda, pip peut installer automatiquement les mises à niveau des dépendances (déjà installées) du paquet que vous avez demandé d'installer, créant ainsi une duplication.

Pour tester cela:

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

Problème! Réparer:

$ pip uninstall matplotlib

Probablement une bonne idée de forcer la mise à niveau matplotlib à la version pip voulue:

$ conda install matplotlib=2.1.1
15
eecharlie

J'ai eu le même genre de problème. Ce que j'ai fait, c’était d’essayer de mettre à jour mon matplotlib avec

pip install -U matplotlib

puis rouvrez anaconda pour le voir fonctionner

0
SANDEEP KUMAR H