2010-08-26 94 views
2

我想使用mplot3d。我使用Ubuntu(lucid)存储库安装了matibplot,并且它似乎是破碎的。任何帮助,将不胜感激。mplot3d坏了Ubuntu的10.04

这是我运行代码:

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

首先,我认为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 = Axes3D(fig)替换ax = fig.add_subplot...。然而,它似乎不与matplotlib 1.0,无论哪种方式...不知道是什么问题...

+0

谢谢。我正在运行0.99.1.1。第一次修改解决了它。 – dannycab 2010-08-30 12:13:05