Skip to main content
 首页 » 编程设计

python之Matplotlib 3D 图绘制不正确

2025年05月04日6jackei

我在尝试在 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 命令一次性填充您想要的值,但您明白了。