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!
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
.
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
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