plt.ioff()
for i in range(0,len(variableList)):
graph = lag1['VDC'].rolling(window=24).corr(other=lag1[variableList[i]])
plt.title(variableList[i])
plt.plot(graph)
plt.axhline(y=0)
plt.savefig(variableList[i])
我想绘制几个不同的独立图。默认为交互模式,其中每个新图形都绘制在前一个图形上。我阅读了该文档,发现我需要使用plt.ioff()。但是,添加此行不会改变任何内容。
答案 0 :(得分:1)
交互模式用于在继续执行脚本的同时获取事件循环。这对于更新脚本中几个不同点的绘图,快速动画或在控制台内工作非常有用。
交互模式与正在创建的新数字无关。即你可以有几个数字或只有一个数字,都可以打开或关闭交互模式。
要在pyplot中获取新数字
plt.figure()
之后执行的pyplot命令将应用于此新图。
pyplot教程有一章Working with multiple figures and axes,详细解释了这一点。
答案 1 :(得分:0)
如果尝试使用non-interactive example, Usage Guide中的示例,则输出实际上是一组三个图。此外,如果设置plt.ioff()
,则%matplotlib inline
不起作用。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.ioff()
for i in range(3):
plt.plot(np.random.rand(10))
plt.show()
但是,如果使用plt.savefig
,它会保存带有累积线的图。
%matplotlib inline
plt.ioff()
for i in range(3):
plt.plot(np.random.rand(10))
plt.savefig(f'{i}.png')
此外,如果满足以下条件,它将不起作用
:%matplotlib auto
plt.ioff()
for i in range(3):
plt.plot(np.random.rand(10))
plt.show()
因此,对于非交互式图形,您应始终使用object-oriented (OO) style来避免此类问题:
%matplotlib auto
plt.ioff()
for i in range(3):
fig, ax = plt.subplots()
ax.plot(np.random.rand(10))
fig.savefig(f'{i}.png')