Je viens d’installer Matplotlib et j’essaie d’exécuter l’un des exemples de scripts. Cependant, je rencontre l'erreur détaillée ci-dessous. Qu'est-ce que je fais mal?
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca(projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
cset = ax.contour(X, Y, Z, 16, extend3d=True)
ax.clabel(cset, fontsize=9, inline=1)
plt.show()
L'erreur est
Traceback (most recent call last):
File "<string>", line 245, in run_nodebug
File "<module1>", line 5, in <module>
File "C:\Python26\lib\site-packages\matplotlib\figure.py", line 945, in gca
return self.add_subplot(111, **kwargs)
File "C:\Python26\lib\site-packages\matplotlib\figure.py", line 677, in add_subplot
projection_class = get_projection_class(projection)
File "C:\Python26\lib\site-packages\matplotlib\projections\__init__.py", line 61, in get_projection_class
raise ValueError("Unknown projection '%s'" % projection)
ValueError: Unknown projection '3d'
Tout d’abord, je pense que mplot3D
fonctionnait un peu différemment dans matplotlib
version 0.99
que dans la version actuelle de matplotlib
.
Quelle version utilisez-vous? (Essayez de courir: python -c 'import matplotlib; print matplotlib."__version__")
Je suppose que vous utilisez la version 0.99
, auquel cas vous devrez soit utiliser une syntaxe légèrement différente, soit mettre à jour une version plus récente de matplotlib
.
Si vous utilisez la version 0.99
, essayez ceci au lieu d'utiliser l'argument de mot clé projection
:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d, Axes3D #<-- Note the capitalization!
fig = plt.figure()
ax = Axes3D(fig) #<-- Note the difference from your original code...
X, Y, Z = axes3d.get_test_data(0.05)
cset = ax.contour(X, Y, Z, 16, extend3d=True)
ax.clabel(cset, fontsize=9, inline=1)
plt.show()
Cela devrait fonctionner dans matplotlib
1.0.x
, pas seulement 0.99
.
Pour ajouter à la réponse de Joe Kington (pas assez de réputation pour un commentaire), il existe un bon exemple de mélange de graphes 2D et 3D dans la documentation de http://matplotlib.org/examples/mplot3d/mixed_subplots_demo.html qui indique que projection = '3d' fonctionne en combinaison avec l’importation Axes3D.
from mpl_toolkits.mplot3d import Axes3D
...
ax = fig.add_subplot(2, 1, 1)
...
ax = fig.add_subplot(2, 1, 2, projection='3d')
En fait, tant que l’importation Axes3D est présente, la ligne
from mpl_toolkits.mplot3d import Axes3D
...
ax = fig.gca(projection='3d')
tel qu'utilisé par l'OP fonctionne également (vérifié avec matplotlib version 1.3.1)
Importez tout mplot3d pour utiliser "projection = '3d'".
Insérez la commande ci-dessous en haut de votre script. Il devrait bien fonctionner.
de mpl_toolkits import mplot3d
Je rencontre le même problème et la réponse de @Joe Kington et @ bvanlew résout mon problème.
mais je devrais ajouter plus d'informations lorsque vous utilisez pycharm et que vous activez auto import
.
lorsque vous formatez le code, le code from mpl_toolkits.mplot3d import Axes3D
sera automatiquement supprimé par pycharm.
oui, ma solution est
from mpl_toolkits.mplot3d import Axes3D
Axes3D = Axes3D # pycharm auto import
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
et ça marche bien!
Essaye ça:
import matplotlib.pyplot as plt
import seaborn as sns
from mpl_toolkits.mplot3d import axes3d
fig=plt.figure(figsize=(16,12.5))
ax=fig.add_subplot(2,2,1,projection="3d")
a=ax.scatter(Dataframe['bedrooms'],Dataframe['bathrooms'],Dataframe['floors'])
plt.plot(a)