2009-04-12 71 views
113

下面的代码重复两个PostScript(.PS)文件,但第二个包含两个行。我如何告诉matplotlib我完成了一个情节?

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重新开始第二个阴谋?

+3

作为一个风格来看,有没有必要使用次要情节当你只有每个人物一个情节。 – Autoplectic 2009-04-12 20:12:46

回答

95

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

+7

太棒了!谢谢!我发现很难找到我需要的文件格式。 pyplot页面非常长,在滚动时我无法看到关闭()的条目。我正在寻找像clean()clear()或flush()这样的东西。 – 2009-04-12 14:47:48

+15

pyplot教程在“多个数字”部分提到了clf()。请注意,如果您只是使用figure()创建新的绘图而不用close()关闭旧绘图(即使您关闭GUI窗口),pyplot仍会保留对旧图形的引用,这可能看起来像内存泄漏。 – 2009-04-12 20:03:06

+3

您可以使用plt.close()/ pylab.close()删除所有旧的数字 – Calvin1602 2013-01-24 08:32:22

130

有一个明确的数字指令,它应该为你做它:

plt.clf() 

如果在同一图

plt.cla() 

清除当前轴的多个次要情节。

27

正如大卫Cournapeau指出,用图()。

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

第一plt.plot前刚进入plt.hold(False),你可以坚持你原来的代码。

3

如果你正在使用交互式Matplotlib,例如在Web应用程序,(如IPython中),您也许寻找

plt.show() 

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

0

如果他们没有正在然后检查这个..说,如果你有x和沿各自轴数据Y的数组。然后检查哪个单元格(jupyter)已经初始化x和y以清空。这是因为,也许你正在将数据附加到x和y而无需重新初始化它们。所以情节也有旧数据。所以检查..

相关问题