Ich habe gerade matplotlib installiert und versuche, eines dieser Beispielskripte auszuführen. Ich stoße jedoch auf den unten beschriebenen Fehler. Was mache ich falsch?
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()
Der Fehler ist
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'
python
matplotlib
Rechteck
quelle
quelle
Antworten:
Zunächst einmal, ich denke ,
mplot3D
ein wenig anders in gearbeitetmatplotlib
Version ,0.99
als es in der aktuellen Version von tutmatplotlib
.Welche Version verwenden Sie? (Versuchen Sie zu laufen:
python -c 'import matplotlib; print matplotlib."__version__")
Ich vermute, Sie führen eine Version aus
0.99
. In diesem Fall müssen Sie entweder eine etwas andere Syntax verwenden oder auf eine neuere Version von aktualisierenmatplotlib
.Wenn Sie eine Version
0.99
ausführen, versuchen Sie dies, anstatt dasprojection
Schlüsselwortargument zu verwenden:Dies sollte auch funktionieren
matplotlib
1.0.x
, nicht nur0.99
.quelle
from mpl_toolkits.mplot3d import Axes3D
. Danach sollte es funktionieren.python -c 'import matplotlib; print(matplotlib.__version__)'
2.0.2
?from mpl_toolkits.mplot3d import Axes3D
... :)Nur um Joe Kingtons Antwort zu ergänzen (nicht genug Ruf für einen Kommentar), gibt es in der Dokumentation unter ein gutes Beispiel für das Mischen von 2D- und 3D-Plots http://matplotlib.org/examples/mplot3d/mixed_subplots_demo.html das projection = 'zeigt. 3d 'arbeitet in Kombination mit dem Axes3D-Import.
In der Tat, solange der Axes3D-Import vorhanden ist, die Linie
wie vom OP verwendet funktioniert auch. (geprüft mit matplotlib Version 1.3.1)
quelle
ax = fig.gca(projection='3d')
funktioniert für mich. Anstelle vonax = plt.subplot(111,projection="3d")
. Ich benutze die Version von2.1.0
Importieren Sie mplot3d als Ganzes, um "projection = '3d'" zu verwenden.
Fügen Sie den folgenden Befehl oben in Ihr Skript ein. Es sollte gut laufen.
quelle
Ich habe das gleiche Problem und die Antwort von @Joe Kington und @ bvanlew löst mein Problem.
Aber ich sollte mehr Informationen hinzufügen, wenn Sie Pycharm verwenden und aktivieren
auto import
.Wenn Sie den Code formatieren, wird der Code
from mpl_toolkits.mplot3d import Axes3D
automatisch von pycharm entfernt.Meine Lösung ist also
und es funktioniert gut!
quelle
# noinspection PyUnresolvedReferences
vor dem Import setzen.Versuche dies:
quelle