Skip to main content
 首页 » 编程设计

python之mplot3d 坏了 ubuntu 10.04

2025年05月04日9softidea

我正在尝试使用 mplot3d。我使用 Ubuntu (lucid) 存储库安装了 matibplot,它似乎开箱即用。任何帮助将不胜感激。

这是我正在运行的代码:

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' 

谢谢。

请您参考如下方法:

首先,我认为 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() 

编辑:实际上,如果将 ax = fig.add_subplot... 替换为 ax = Axes3D(fig),则您发布的示例代码确实适用于 matplotlib 0.99。然而,它似乎不适用于 matplotlib 1.0,无论哪种方式......不确定问题是什么......