这是我现有的代码。它应该将多个绘图绘制到2个不同的图形上,它正确地执行(plt.show()
的输出是它们应该的),但是当我去检查生成的文件时,保存相同的图形在graph1.pdf
和graph2.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")
答案 0 :(得分:0)
pdf.clf()
pdf = plt.figure()
解决了它。原来我认为我必须清除它,但我没有意识到我必须再次调用它。谢谢!