matplotlib subplot畫子圖

以下圖爲例:在一個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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章