当前位置:  开发笔记 > 编程语言 > 正文

我怎么告诉matplotlib我已经完成了一个情节?

如何解决《我怎么告诉matplotlib我已经完成了一个情节?》经验,为你挑选了5个好方法。

以下代码绘制到两个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重新开始第二个情节?



1> randlet..:

有一个清晰的数字命令,它应该为你做:

plt.clf()

如果您在同一图中有多个子图

plt.cla()

清除当前轴.


在我的例子中,plt.clf()足以清除数字但不足以阻止内存泄漏,但首先调用plt.close()会停止内存泄漏.Python 2.7,matplotlib 1.1.1rc1(ubuntu 12.04).仅供参考.

2> David Courna..:

figure例如,您可以使用创建新绘图,或close在第一个绘图之后使用.


pyplot教程确实在"多个数字"部分中提到了clf().请注意,如果您只使用figure()创建一个新绘图而不使用close()关闭旧绘图(即使关闭GUI窗口),pyplot会保留对旧图形的引用,这可能看起来像内存泄漏.
您可以使用plt.close()/ pylab.close()删除所有旧数字

3> 小智..:

如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")


您仍应使用`plt.clf()`,数字将保留在内存中,直到显式关闭

4> Dirklinux..:

只需plt.hold(False)在第一个plt.plot之前输入,就可以坚持原始代码.


在matplotlib == 2.0.2中,我收到此消息:MatplotlibDeprecationWarning:pyplot.hold已弃用.

5> Damo..:

如果您以交互方式使用Matplotlib,例如在Web应用程序中(例如ipython),您可能正在寻找

plt.show()

而不是plt.close()plt.clf().

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有