Python Matplotlib:多条三维线都是使用“我的循环”中的最终y值绘制的

Python Matplotlib:多条三维线都是使用“我的循环”中的最终y值绘制的,python,matplotlib,mplot3d,Python,Matplotlib,Mplot3d,我试图在3D图形中绘制多条线。每条线代表一个月:我希望它们在y方向上平行显示 我的计划是在一组Y值上循环,但我无法使其正常工作,因为使用ax.plot命令(请参见下面的工作代码)会在最终Y值的位置生成十几行。令人困惑的是,将ax.plot替换为ax.scatter确实会产生一组平行的数据线(尽管是以一组点的形式;ax.view_init set可以最好地显示结果的平行方面) 如何使用图形绘制具有多条平行线的绘图? 我目前的解决办法是用十几个不同的Y值数组替换循环,但这不是正确的答案 from m

我试图在3D图形中绘制多条线。每条线代表一个月:我希望它们在y方向上平行显示

我的计划是在一组Y值上循环,但我无法使其正常工作,因为使用ax.plot命令(请参见下面的工作代码)会在最终Y值的位置生成十几行。令人困惑的是,将ax.plot替换为ax.scatter确实会产生一组平行的数据线(尽管是以一组点的形式;ax.view_init set可以最好地显示结果的平行方面)

如何使用图形绘制具有多条平行线的绘图? 我目前的解决办法是用十几个不同的Y值数组替换循环,但这不是正确的答案

from mpl_toolkits.mplot3d.axes3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

# preamble
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
cs = ['r','g','b','y','r','g','b','y','r','g','b','y']

# x axis
X = np.arange(24)

# y axis
y = np.array([15,45,75,105,135,165,195,225,255,285,315,345])
Y = np.zeros(24)

# data - plotted against z axis
Z = np.random.rand(24)

# populate figure
for step in range(0,12):
    Y[:] = y[step]
#    ax.plot(X,Y,Z, color=cs[step])
    ax.scatter(X,Y,Z, color=cs[step])

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
# set initial view of plot
ax.view_init(elev=80., azim=345.)
plt.show()
我还在学习python,因此非常感谢简单的解决方案(或者最好是那些有大量解释性注释的解决方案)。

使用

ax.plot(X, np.array(Y), Z, color=cs[step])

这看起来像是mpl中的一个错误,当您提交数据时,我们没有复制数据,因此每行共享相同的
np.array
对象,因此当您更新所有行时,请使用

ax.plot(X, np.array(Y), Z, color=cs[step])


这看起来像是mpl中的一个错误,当您提交数据时,我们没有复制数据,因此每行共享相同的
np.array
对象,所以当您更新所有行时。

Wow-一个非常简单的解决方案(事实上是两个!)-非常感谢,这太完美了。Wow-一个非常简单的解决方案(事实上是两个!)-非常感谢,太好了。