在一个python脚本中将多个图表保存到不同的pdf文件中

时间:2018-04-24 17:49:40

标签: python

这是我现有的代码。它应该将多个绘图绘制到2个不同的图形上,它正确地执行(plt.show()的输出是它们应该的),但是当我去检查生成的文件时,保存相同的图形在graph1.pdfgraph2.pdf中,它应该只在graph1.pdf中。在保存第二个绘图之前我尝试使用pdf.clf(),这只会导致所述绘图保存为空白而第一个仍然正确保存。知道我错过了什么吗?

from matplotlib import pyplot as plt
from scipy.integrate import odeint as odin
import numpy as np

pdf = plt.figure()


phi_w_0 = [1.5,0]
damp = [0.02 , 0.05 , 0.1 , 0.2]

t = np.linspace(0,200,1000)

def f(w,t):
    return [w[1] , -(B*w[1]) + np.sin(w[0])] 

for B in damp:
    result = odin(f , phi_w_0 , t)
    plt.plot(t , result[:,1] , label='$ \\beta = $ %1.2lf ' % B)

plt.legend()
plt.xlabel('$ \\tau $')
plt.ylabel('$ \\phi $')
plt.show()
pdf.savefig("graph1.pdf")

plt.close()

def g(w,t): 
    return [w[1] , -(B*w[1]) + np.sin(w[0])]

for B in damp:
    result = odin(g , phi_w_0 , t)
    plt.plot(t , result[:,1] , label='$ \\beta = $ %1.2lf ' % B)

plt.legend()
plt.xlabel('$ \\tau $')
plt.ylabel('E')
plt.show()
pdf.savefig("graph2.pdf")

1 个答案:

答案 0 :(得分:0)

pdf.clf()
pdf = plt.figure()

解决了它。原来我认为我必须清除它,但我没有意识到我必须再次调用它。谢谢!