问题:如何告诉matplotlib我已经完成了情节?
下面的代码绘制到两个PostScript(.ps)文件,但是第二个包含这两行。
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
plt.subplot(111)
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("first.ps")
plt.subplot(111)
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")
如何告诉matplotlib重新开始第二个绘图?
回答 0
figure
例如,您可以用于创建新图,或者close
在第一个图之后使用。
回答 1
有一个清晰的图形命令,它应该为您完成:
plt.clf()
如果同一图中有多个子图
plt.cla()
清除当前轴。
回答 2
如David Cournapeau所述,使用Figure()。
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
plt.figure()
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("first.ps")
plt.figure()
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")
或子图(121)/子图(122)用于相同图,不同位置。
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
plt.subplot(121)
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.subplot(122)
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")
回答 3
只要plt.hold(False)
在第一个plt.plot之前输入,就可以坚持原始代码。
回答 4
如果您以交互方式使用Matplotlib,例如在Web应用程序(例如ipython)中,则可能需要寻找
plt.show()
代替plt.close()
或plt.clf()
。
回答 5
如果它们都不起作用,则检查此..说您是否沿各自的轴具有x和y数据数组。然后检查在哪个单元格(jupyter)中将x和y初始化为空。这是因为,也许您是将数据附加到x和y而不重新初始化它们。因此,情节也有旧数据。所以检查一下。