【问题标题】:mplot3d broken ubuntu 10.04mplot3d 损坏的 ubuntu 10.04
【发布时间】:2011-04-04 08:41:10
【问题描述】:

我正在尝试使用 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'

谢谢。

【问题讨论】:

    标签: python matplotlib ubuntu-10.04


    【解决方案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()
    

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

    【讨论】:

    • 谢谢。我正在运行 0.99.1.1。第一个更改修复了它。
    猜你喜欢
    • 2012-08-05
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 2015-03-16
    • 2012-06-24
    • 2011-06-09
    相关资源
    最近更新 更多