【问题标题】:continuous 3d plotting using matplotlib使用 matplotlib 进行连续 3D 绘图
【发布时间】:2015-05-06 20:23:07
【问题描述】:

我正在做一个需要使用 matplotlib 进行连续 3D 绘图的项目。 整个项目很复杂,但我用这个简单的例子总结了问题:

import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import time


count=0
fig = plt.figure()
ax = fig.gca(projection='3d')
z = [0]
x = [0]
y = [0]
plt.show()
while True:
    count +=1
    x.append(count)
    x.append(count)
    x.append(count)
    ax.plot(x, y, z)
    time.sleep(1)
    plt.draw()

在这段代码中,我试图用新的 x、y、z 值重新绘制 3D 线。但什么也没发生!

【问题讨论】:

    标签: python matplotlib plot 3d


    【解决方案1】:

    我不知道为什么它没有按照你的编码方式工作,但我可以让它像这样工作:

    import matplotlib as mpl
    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    import time
    import numpy
    
    
    count=0
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    z = [0]
    x = [0]
    y = [0]
    
    plt.ion()    ###
    
    plt.show()
    while True:
        count +=1
        x.append(count)
        y.append(count**2) #
        z.append(count**3) # just for eye-candy
    
        ax.plot(numpy.array(x),    ###
                numpy.array(y),    ###
                numpy.array(z))    ###
    
        time.sleep(1)
        plt.draw()
    

    ion 部分是有道理的,但是在这里将您的序列转换为数组是必要的,因为(显然)由于简单序列不可能进行矩阵乘法,我遇到了错误:

    (...)
    File "C:\Python27\lib\site-packages\mpl_toolkits\mplot3d\proj3d.py", line     158, in proj_transform_vec
        vecw = np.dot(M, vec)
    TypeError: can't multiply sequence by non-int of type 'float'
    

    【讨论】:

    • 谢谢 :) ,但是当我运行修改后的代码时,3D 空间出现大约 0.5 秒然后消失并出现此错误:imageupload.co.uk/images/2015/05/06/Capture1.png
    • 哦,对不起...我重新输入了你的一个错字:你使用了 x.append(count) 三次(而不是添加到 x、y 和 z)。我更正了我的代码,现在它似乎可以工作了。
    猜你喜欢
    • 2011-07-07
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多