Matplotlib 3D绘图未正确绘制

时间:2012-01-08 06:27:35

标签: python matplotlib

我在尝试在MatPlotLib中绘制3D绘图中的一系列线时遇到问题。 当我运行下面的代码时,所有行都被绘制在y的最后一个值上。即使y在循环中正确递增。 任何帮助理解这一点将不胜感激。 谢谢 大卫

#========== Code Start=================
import numpy as np
import matplotlib
from matplotlib.figure import Figure
import pylab as plt
from mpl_toolkits.mplot3d import Axes3D


fig = plt.figure()
ax = Axes3D(fig)
x=np.arange(5)
y=np.zeros(len(x))

for i in range(1,10):
    y.fill(i)
    z=plt.randn(len(y))
    ax.plot(xs=x, ys=y, zs=z)#, zdir='z', label='ys=0, zdir=z')
    plt.draw()
    print i,len(y),y,x,z
plt.xlabel('X') 
plt.ylabel('Y')
plt.zlabel('Z')   
plt.show()
#========== Code End=================

1 个答案:

答案 0 :(得分:1)

看起来所有情节都可能指出y。因此,当您执行ax.plot时,您将引用传递给y。每次都是相同的引用,但每次传递都会更改值。当执行plt.show()时,使用对y的引用,现在将其设置为9.因此,在每次传递时为y创建一个不同的对象,并为该传递创建所需的值:

y = np.zeros(len(x))
y.file(i)

可能会有一个numpy命令一次性填充你想要的值,但你得到了图片。