Acabei de instalar o matplotlib e estou tentando executar um dos scripts de exemplo. No entanto, encontro o erro detalhado abaixo. O que estou fazendo de errado?
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()
O erro é
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
fonte
fonte
Respostas:
Primeiro, acho que
mplot3D
funcionou um pouco diferente namatplotlib
versão0.99
do que na versão atual domatplotlib
.Qual versão você está usando? (Tente executar:
python -c 'import matplotlib; print matplotlib."__version__")
Suponho que você esteja executando a versão
0.99
. Nesse caso, você precisará usar uma sintaxe um pouco diferente ou atualizar para uma versão mais recente domatplotlib
.Se você estiver executando a versão
0.99
, tente fazer isso em vez de usar oprojection
argumento keyword:Isso deve funcionar
matplotlib
1.0.x
, também, não apenas0.99
.fonte
from mpl_toolkits.mplot3d import Axes3D
. Depois, deve funcionar.python -c 'import matplotlib; print(matplotlib.__version__)'
2.0.2
?from mpl_toolkits.mplot3d import Axes3D
... :)Apenas para adicionar à resposta de Joe Kington (reputação insuficiente para um comentário), há um bom exemplo de mistura de plotagens 2D e 3D na documentação em http://matplotlib.org/examples/mplot3d/mixed_subplots_demo.html, que mostra projeção = ' 3d 'trabalhando em conjunto com a importação do Axes3D.
De fato, enquanto a importação do Axes3D estiver presente, a linha
como usado pelo OP também funciona. (verificado com o matplotlib versão 1.3.1)
fonte
ax = fig.gca(projection='3d')
funciona para mim. Em vez deax = plt.subplot(111,projection="3d")
. Estou usando a versão de2.1.0
Importe mplot3d inteiro para usar "projection = '3d'".
Insira o comando abaixo na parte superior do seu script. Deve funcionar bem.
fonte
Encontro o mesmo problema, e a resposta de Joe Kington e @ bvanlew resolve o meu problema.
mas devo adicionar mais informações ao usar o pycharm e ativar
auto import
.quando você formata o código, o código
from mpl_toolkits.mplot3d import Axes3D
é removido automaticamente por pycharm.então, minha solução é
e funciona bem!
fonte
# noinspection PyUnresolvedReferences
antes da importação.Tente o seguinte:
fonte