Python:循环中的 Pyplot --> 曲线是每次迭代累积的,而不是单独绘制的



我想绘制10个列表,每个列表由一条曲线表示,并保存在一个单独的文件中,所以没有什么特别的。

问题是,绘制的曲线在每次迭代后都不会被删除,因此在每次迭代/绘制/文件中,新曲线只是添加到以前迭代的曲线中。

list1 = [...]
...
list10 = [...]
all_Lists = [list1, ..., list10]
for i in range(10):
    pyplot.plot(all_Lists[i])
    pyplot.savefig(...)

file1绘制了1条曲线/list1。

file2绘制了2条曲线/list1+list2。…

如果有人能解释一下如何使用for循环来获得每个绘图的单个曲线,我将不胜感激。谢谢

我认为混淆的原因是您没有使用OO接口。Pyplot很方便,但它可以在后台处理很多事情,让你不知道到底发生了什么。在你的例子中,你可以动态创建一个图形和轴,并保持在同一轴上绘制。

在打印之前清除轴可以解决您的问题,请尝试添加pyplot.cla()作为循环的第一行。

我更喜欢制作一个图形和轴对象:

all_Lists = [list(np.random.randn(30).cumsum()) for i in range(10)]
fig, ax = plt.subplots()
for n, curv in enumerate(all_Lists):
    ax.cla()
    ax.plot(curv)
    fig.savefig()

最新更新