Saya baru saja menginstal matplotlib dan saya mencoba menjalankan salah satu contoh skrip di sana. Namun saya mengalami kesalahan yang dirinci di bawah ini. Apa yang saya lakukan salah?
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()
Kesalahannya adalah
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
persegi panjang
sumber
sumber
Jawaban:
Pertama, saya pikir
mplot3D
bekerja sedikit berbeda dalammatplotlib
versi0.99
daripada di versi saat inimatplotlib
.Versi mana yang Anda gunakan? (Coba jalankan:
python -c 'import matplotlib; print matplotlib."__version__")
Saya menduga Anda sedang menjalankan versi
0.99
, dalam hal ini Anda harus menggunakan sintaks yang sedikit berbeda atau memperbarui ke versi yang lebih barumatplotlib
.Jika Anda menjalankan versi
0.99
, coba lakukan ini alih-alih menggunakan menggunakanprojection
argumen kata kunci:Ini harus bekerja
matplotlib
1.0.x
, juga, bukan hanya0.99
.sumber
from mpl_toolkits.mplot3d import Axes3D
. Setelah itu, itu akan berhasil.python -c 'import matplotlib; print(matplotlib.__version__)'
2.0.2
?from mpl_toolkits.mplot3d import Axes3D
... :)Hanya untuk menambah jawaban Joe Kington (tidak cukup reputasi untuk komentar) ada contoh yang baik dari pencampuran plot 2d dan 3d dalam dokumentasi di http://matplotlib.org/examples/mplot3d/mixed_subplots_demo.html yang menunjukkan proyeksi = ' 3d 'bekerja dalam kombinasi dengan impor Axes3D.
Faktanya selama impor Axes3D hadir
seperti yang digunakan oleh OP juga berfungsi. (diperiksa dengan matplotlib versi 1.3.1)
sumber
ax = fig.gca(projection='3d')
tidak bekerja untuk saya. Alih-alihax = plt.subplot(111,projection="3d")
. Saya menggunakan versi2.1.0
Impor keseluruhan mplot3d untuk menggunakan "proyeksi = '3d'".
Masukkan perintah di bawah ini di atas skrip Anda. Seharusnya berjalan dengan baik.
sumber
Saya mengalami masalah yang sama, dan jawaban @Joe Kington dan @ bvanlew memecahkan masalah saya.
tapi saya harus menambahkan lebih banyak informasi ketika Anda menggunakan pycharm dan aktifkan
auto import
.ketika Anda memformat kode, kode
from mpl_toolkits.mplot3d import Axes3D
akan dihapus secara otomatis oleh pycharm.jadi, solusi saya adalah
dan itu bekerja dengan baik!
sumber
# noinspection PyUnresolvedReferences
sebelum impor.Coba ini:
sumber