我正在尝试在Python中使用matplotlib
函数以交互方式仅绘制2个增长列表的最后50个值,同时循环继续。但是,一旦列表的大小增加到50以上,绘图线的值就会重叠。
我想清除重叠。
这是迭代时的绘图照片< 50.干净整洁。
这是迭代时的绘图照片>你可以看到它变得混乱了。
这是我的代码
import matplotlib.pyplot as plt
ls1 = []
ls2 = []
while True:
(some computation to get, in every iteration, 2 new values: ls1_new and ls2_new)
ls1.append(ls1_new)
ls2.append(ls2_new)
plt.plot(ls1[-50:])
plt.plot(ls2[-50:])
plt.draw()
plt.pause(0.0001)
任何人都可以帮我解决重叠部分吗?谢谢你的帮助! :)
答案 0 :(得分:0)
您的问题是您在每次迭代时都在创建新行。相反,更新现有线路可能会更好。下面的代码可能不会马上工作,但它应该指向正确的方向。一般的想法是保持对Line2D
返回的plt.plot()
对象的引用,然后使用成员函数Line2D.set_data(x, y)
或Line2D.set_ydata(y)
来更新每次迭代时的行。
import matplotlib.pyplot as plt
ls1 = []
ls2 = []
l1, = plt.plot([])
l2, = plt.plot([])
while True:
(some computation to get, in every iteration, 2 new values: ls1_new and ls2_new)
ls1.append(ls1_new)
ls2.append(ls2_new)
l1.set_data(range(50),ls1[-50:])
l2.set_data(range(50),ls2[-50:])
plt.draw()
plt.pause(0.0001)