133 votes

Matplotlib: erreur "projection inconnue '3d'"

Je viens d'installer matplotlib et j'essaie d'exécuter l'un des scripts d'exemple là. Cependant, je tombe sur l'erreur détaillée ci-dessous. Qu'est-ce que je fais de mal ?

L'erreur est

118voto

Joe Kington Points 68089

Tout d'abord, je pense que mplot3D travaillé un peu différemment dans matplotlib version 0.99 que dans la version actuelle de matplotlib.

Quelle version utilisez-vous? (Essayez de lancer: python -c 'import matplotlib; print matplotlib.__version__')

Je devine que vous êtes en cours d'exécution de la version 0.99, dans ce cas, vous aurez besoin d'utiliser une syntaxe légèrement différente ou mettre à jour vers une version plus récente de matplotlib.

Si vous utilisez la version 0.99, essayez de faire cela plutôt que de les utiliser à l'aide de l' projection argument mot-clé:

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 les matplotlib 1.0.x, ainsi, pas seulement 0.99.

65voto

bvanlew Points 39

Juste pour ajouter à Joe kingston portant réponse (pas assez de réputation pour un commentaire) il y a un bon exemple de mélange de 2d et de 3d parcelles dans la documentation à http://matplotlib.org/examples/mplot3d/mixed_subplots_demo.html ce qui montre la projection='3d' en combinaison avec les Axes3D d'importation.

from mpl_toolkits.mplot3d import Axes3D
...
ax = fig.add_subplot(2, 1, 1)
...
ax = fig.add_subplot(2, 1, 2, projection='3d')

En fait, aussi longtemps que le Axes3D d'importation est de présenter la ligne

from mpl_toolkits.mplot3d import Axes3D
...
ax = fig.gca(projection='3d')

tel qu'utilisé par les OP fonctionne également. (vérifié avec matplotlib version 1.3.1)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X