我在尝试在 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=================
请您参考如下方法:
看起来所有绘图都指向 y。因此,当您执行 ax.plot 时,您正在传递对 y 的引用。每次都是相同的引用,但每次传递的值都会改变。当执行 plt.show() 时,将使用对 y 的引用,它现在设置为 9。因此,在每次传递时为 y 创建一个不同的对象,并使用该传递所需的值:
y = np.zeros(len(x))
y.file(i)
可能有一个 numpy 命令一次性填充您想要的值,但您明白了。
