[英]Saving multiple plots as one image
我有这个代码来生成三个图。 代码运行良好,并按照我想要的方式生成所有三个图。 然而,当我试图保存绘图时,我得到的只是最后一个绘图的图像,它是 G0 的绘图,而不是一个接一个显示的绘图的图像。 我尝试使用plt.show()
而不是使用plt.savefig()
和plt.figure
,但这会返回一个白色(空白)图像。 有人可以帮忙吗?
import numpy as np import matplotlib.pylab as plt
def planks_law(wave, T):
h = 6.626e-34
c = 3e8
k = 1.38e-23
bb = (2*h*c**2)/(wave**5)* (1/(np.exp((h*c)/(wave*k*T)-1)))
return bb
b0 = np.genfromtxt("filename.txt") plt.plot(b0[:, 0]*1e-10,b0[:, 1],label='B0 Data')
bb_b0 = planks_law(b0[:,0]*1e-10, 30000)
scale_bb = np.trapz(b0[:,1],b0[:,0]*1e-10) / np.trapz(bb_b0,b0[:,0]*1e-10)
bb_b0_scaled = bb_b0 * scale_bb
plt.plot(b0[:,0]*1e-10, bb_b0_scaled,label='B0 Theoretical')
plt.xlabel('Wavelength [m]') plt.ylabel('I(λ,T)')
plt.title('Blackbody Curve Fit to Known Spectra')
plt.legend(loc='upper right')
plt.savefig('filename.jpg')
plt.figure()
f0 = np.genfromtxt("filename.txt") plt.plot(f0[:, 0]*1e-10,f0[:, 1],label='F0 Data')
bb_f0 = planks_law(f0[:,0]*1e-10, 7200)
scale_bb = np.trapz(f0[:,1],f0[:,0]*1e-10) / np.trapz(bb_f0,f0[:,0]*1e-10)
bb_f0_scaled = bb_f0 * scale_bb
plt.plot(f0[:,0]*1e-10, bb_f0_scaled,label='F0 Theoretical')
plt.xlabel('Wavelength [m]') plt.ylabel('I(λ,T)')
plt.legend(loc='lower right')
plt.savefig('filename.jpg')
plt.figure()
g0 = np.genfromtxt("filename.txt") plt.plot(g0[:, 0]*1e-10,g0[:, 1],label='G0 Data')
bb_g0 = planks_law(g0[:,0]*1e-10, 6000)
scale_bb = np.trapz(g0[:,1],g0[:,0]*1e-10) / np.trapz(bb_g0,g0[:,0]*1e-10)
bb_g0_scaled = bb_g0 * scale_bb
plt.plot(g0[:,0]*1e-10, bb_g0_scaled,label='G0 Theoretical')
plt.xlabel('Wavelength [m]') plt.ylabel('I(λ,T)')
plt.legend(loc='lower right')
plt.figure()
plt.savefig('filename.jpg')
你需要使用subplots
您可以像这样垂直堆叠两个图
fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
然后当您保存绘图时,您将在同一图像中拥有所有三个绘图。
在此处阅读有关子图的更多信息
您正在绘制分隔数字,这就是为什么您只能单独保存它们。 尝试使用子图绘制单个图形。 有两种选择:
plt.subplot(#rows, #cols, plot id)
import matplotlib.pyplot as plt
plt.figure(figsize=(adjust size), **other_fig_args)
plt.subplot(3, 1, 1)
plt.plot(...) # top plot
plt.subplot(3, 1, 2)
plt.plot(...) # middle plot
plt.subplot(3, 1, 3)
plt.plot(...) # bottom plot
plt.savefig(...) # will now save all plots
plt.subplots(#rows, #cols, figsize=(adjust size), **other_fig_args)
fig, axes = plt.subplots(3, 1, figsize=(adjust size), **other_fig_args)
axes[0].plot(...) # top plot
axes[1].plot(...) # middle plot
axes[2].plot(...) # bottom plot
plt.savefig(...) # will now save all plots
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.