mplot3d не работает Ubuntu 10.04 - PullRequest
       13

mplot3d не работает Ubuntu 10.04

2 голосов
/ 26 августа 2010

Я пытаюсь использовать mplot3d. Я установил matibplot с помощью репозиториев Ubuntu (lucid), и он кажется нестандартным. Любая помощь будет оценена.

Это код, который я использую:

from __future__ import division
from mpl_toolkits.mplot3d import Axes3D
from random import *
from scipy import *
import matplotlib.pyplot as plt

locA = mat([0,0,0])
locB = mat([2,0,0]) 
locC = mat([1,sqrt(3),0])
locD = mat([1,sqrt(3)/2,sqrt(3)])
startLoc = locA

points = startLoc
n = 10000
x = linspace(1,n,n)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

for i in x:

    j = randint(1,4)

    if j < 2:

        startLoc = (startLoc+locA)/2
        points = concatenate((points,startLoc))

    elif j < 3:

        startLoc = (startLoc+locB)/2
        points = concatenate((points,startLoc))

    elif j < 4:

        startLoc = (startLoc+locC)/2
        points = concatenate((points,startLoc))

    else:

        startLoc = (startLoc+locD)/2
        points = concatenate((points,startLoc))

ax.scatter(points[:,0],points[:,1],points[:,2])
plt.show()

И это ошибка, которую я получаю:

Traceback (most recent call last):
  File "triangle_random_3D.py", line 17, in <module>
    ax = fig.add_subplot(111, projection='3d')
  File "/usr/lib/pymodules/python2.6/matplotlib/figure.py", line 677, in add_subplot
    projection_class = get_projection_class(projection)
  File "/usr/lib/pymodules/python2.6/matplotlib/projections/__init__.py", line 61, in get_projection_class
    raise ValueError("Unknown projection '%s'" % projection)
ValueError: Unknown projection '3d'

Спасибо.

1 Ответ

1 голос
/ 26 августа 2010

Во-первых, я думаю, что mplot3D работал немного иначе в версии matplotlib 0.99, чем в текущей версии matplotlib.

Какую версию вы используете?(Попробуйте запустить: python -c 'import matplotlib; print matplotlib.__version__')

Я предполагаю, что вы используете версию 0.99, и в этом случае вам нужно будет использовать немного другой синтаксис или обновить более позднюю версию matplotlib.

Если вы работаете с версией 0.99, попробуйте сделать следующее:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)

Во-вторых, отправленный вами код не работает, даже если mplot3D настроен правильно.

Попробуйте более простой пример.Например:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
plt.show()

Редактировать: Фактически ваш опубликованный пример кода работает с matplotlib 0.99, если вы замените ax = fig.add_subplot... на ax = Axes3D(fig).Однако это не похоже на работу с matplotlib 1.0, в любом случае ... Не уверен, в чем проблема ...

...