以下圖爲例:在一個figure上有三個圖:
plt.subplot(221) #表示有2行2列第一個圖
plt.plot(x1,y1)
plt.subplot(222) #表示有2行2列第二個圖
plt.loglog(x2,y2)
plt.subplot(212)
plt.loglog(x3,y3)
plt.show()
上面的前兩個都好理解,plt.subplot(212)比較不好理解。
因爲第三個圖實際上是佔用了(223)和(224)兩個圖的位置;現在規定當出現這種一個圖佔多個圖位置時要重新劃分,相當於是(211)和(212),即2行1列,而(211)已經被第一第二個圖佔了(此時要把它們一起看成一列),現在是(212)表示第2行第1列第2個圖。
完整代碼如下,計算的是黑體譜
import numpy as np
import matplotlib.pyplot as plt
import pysm
def Bv(nu, T):
kB = 1.3806505*10**(-23) # J/K
h = 6.6260693*10**(-34+9) # J·s, dimension becomes J/GHz by plus 9
c = 299792458
return 2*h*nu**3/c**2*1/(np.exp(h*nu/(kB*T))-1)
# plot CMB power spectrum
Tcmb = 2.725
nu = np.arange(10,1000)
CMB_power_spect = Bv(nu,Tcmb)
# get max value of Bv and corresponding value of nu;
max_Bv = max(CMB_power_spect)
max_ind = list(CMB_power_spect).index(max_Bv)
max_Bv_to_nu = nu[max_ind]
print("maximun value:>>>(%e,%d)"%(max_Bv,max_Bv_to_nu))
# subplot
plt.figure() #這句可有可無
plt.subplot(221)
plt.plot(nu,CMB_power_spect)
plt.subplot(222)
plt.loglog(nu,CMB_power_spect)
plt.subplot(212)
plt.loglog(nu,CMB_power_spect*10**26*pysm.common.convert_units('Jysr','uK_RJ',nu))
plt.show()