3D-сюжет Matplotlib работает неправильно - PullRequest
2 голосов
/ 08 января 2012

У меня возникла проблема при попытке построить серию линий на трехмерном графике в MatPlotLib.Когда я запускаю код ниже, все линии отображаются на последнем значении 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 Ответ

1 голос
/ 08 января 2012

Похоже, что y может быть указано на всех графиках.Таким образом, вы передаете ссылку на y, когда выполняете ax.plot.Это одна и та же ссылка каждый раз, но значения меняются при каждом проходе.Когда plt.show () выполняется, ссылка на y используется и теперь она установлена ​​на 9. Итак, создайте другой объект для y на каждом проходе со значениями, которые вы хотите для этого прохода:

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

Может быть, есть пустая команда, которая заполняет требуемое значение за один раз, но вы получите картину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...