Я только что установил matplotlib и пытаюсь запустить один из примеров скриптов. Однако я столкнулся с ошибкой, описанной ниже. Что я делаю не так?
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()
Ошибка
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
rectangletangle
источник
источник
Ответы:
Во-первых, я думаю,
mplot3D
что вmatplotlib
версии0.99
он работал немного иначе, чем в текущей версииmatplotlib
.Какую версию вы используете? (Попробуйте запустить:
python -c 'import matplotlib; print matplotlib."__version__")
Я предполагаю, что вы используете версию
0.99
, и в этом случае вам нужно будет либо использовать немного другой синтаксис, либо обновить до более новой версииmatplotlib
.Если вы используете версию
0.99
, попробуйте сделать это вместо использованияprojection
аргумента ключевого слова:Это должно работать
matplotlib
1.0.x
, а не только0.99
.источник
from mpl_toolkits.mplot3d import Axes3D
. После этого он должен работать.python -c 'import matplotlib; print(matplotlib.__version__)'
2.0.2
?from mpl_toolkits.mplot3d import Axes3D
... :)Чтобы добавить к ответу Джо Кингтона (недостаточно репутации для комментария), есть хороший пример смешивания графиков 2d и 3d в документации по адресу http://matplotlib.org/examples/mplot3d/mixed_subplots_demo.html, который показывает projection = ' 3d 'работает в сочетании с импортом Axes3D.
Фактически, пока присутствует импорт Axes3D, строка
как используется OP, также работает. (проверено с помощью matplotlib версии 1.3.1)
источник
ax = fig.gca(projection='3d')
действительно работает для меня. Вместоax = plt.subplot(111,projection="3d")
. Я использую версию2.1.0
Импортируйте mplot3d целиком, чтобы использовать projection = '3d'.
Вставьте команду ниже в начало вашего скрипта. Он должен работать нормально.
источник
Я столкнулся с той же проблемой, и ответ @Joe Kington и @bvanlew решает мою проблему.
но я должен добавить больше информации, когда вы используете pycharm и enable
auto import
.когда вы форматируете код, код
from mpl_toolkits.mplot3d import Axes3D
автоматически удаляется pycharm.Итак, мое решение
и это хорошо работает!
источник
# noinspection PyUnresolvedReferences
перед импортом.Попробуй это:
источник