2017-12-27 4 views
1

subplot2grid와 축 레이블을 함께 사용하면 도움이 될 것입니다. 첨부 된 그림에서 볼 수 있듯이 일부 축 레이블은 인접한 서브 그림의 표면과 겹칩니다.
도움이 될 수 있도록 몇 가지 코드도 첨부하십시오.축 레이블이있는 Matplotlib subplot2grid 패킹

def init_plot(self): 

    self.f0 = plt.figure(num = 0, figsize = (12, 8))#, dpi = 100) 
    self.f0.suptitle("CFM diffusion", fontsize=12) 
    self.ax01 = plt.subplot2grid((2, 3), (0, 0)) 
    self.ax02 = plt.subplot2grid((2, 3), (0, 1)) 
    self.ax03 = plt.subplot2grid((2, 3), (1, 0)) 
    self.ax04 = plt.subplot2grid((2, 3), (1, 1)) 
    self.ax05 = plt.subplot2grid((2, 3), (0, 2)) 
    self.ax06 = plt.subplot2grid((2, 3), (1, 2)) 


    self.ax01.set_ylim((300, 0)) 
    self.ax02.set_ylim((300,0)) 
    self.ax03.set_ylim((230, 250)) 
    self.ax04.set_ylim((0.08, 0.22)) 
    self.ax02.set_xlim((230, 250)) 
    self.ax03.set_xlim((self.model_time[0], self.model_time[-1])) 
    self.ax04.set_xlim((self.model_time[0], self.model_time[-1])) 
    self.ax05.set_ylim((300,0)) 
    self.ax05.set_xlim((0, 0.125)) 
    self.ax06.set_xlim((self.model_time[0], self.model_time[-1])) 
    self.ax06.set_ylim((0.08, 0.125)) 

    self.ax01.set_ylabel(r"Depth [m]") 
    self.ax01.set_xlabel(r"Density [$\mathrm{kgm}^{-3}$]") 
    self.ax02.set_ylabel(r"Depth [m]") 
    self.ax02.set_xlabel(r"Temperature [K]") 
    self.ax03.set_ylabel(r"Temperature Forcing [K]") 
    self.ax03.set_xlabel(r"Model Time [y]") 
    self.ax04.set_ylabel(r"Accumulation Forcing [$\mathrm{my}^{-1}$ ice eq.]") 
    self.ax04.set_xlabel(r"Model Time [y]") 
    self.ax05.set_ylabel(r"Depth [m]") 
    self.ax05.set_xlabel(r"Diffusion Length [m]") 
    self.ax06.set_ylabel(r"$\sigma'_{18}$ [m]") 
    self.ax06.set_xlabel(r"Model Time [y]") 

    # self.ax01.set_title('Density profile') 
    # self.ax02.set_title('Temp. profile') 
    # self.ax03.set_title('Temperature Forcing') 
    # self.ax04.set_title('Accum Forcing') 
    # self.ax05.set_title('Diffusion Length') 
    # self.ax06.set_title('Diffusion Length at CO') 

    self.hlp011 = self.ax01.plot(self.rho_hl*1000, self.z_hl, "r--") 
    self.p011, = self.ax01.plot(self.rho[0][1:], self.z[0][1:],'b-') 
    self.p012, = self.ax02.plot(self.temperature[0][1:], self.z[0][1:], 'k-') 
    self.p021, = self.ax03.plot(self.climate[0,0], self.climate[0,2],'k-') 
    self.p022, = self.ax04.plot(self.climate[0,0], self.climate[0,1], 'k-') 
    print(self.climate[0,1]) 
    self.p023, = self.ax05.plot(self.iso_sigmaD[0][1:], self.z[0][1:], 'r-') 
    self.p024, = self.ax05.plot(self.iso_sigma18[0][1:], self.z[0][1:], 'b-') 
    self.iso_sigma18_co = np.array((self.iso_sigma18[0][1:][self.rho[0][1:]>804.3][0],)) 
    self.p025, = self.ax06.plot(self.climate[0,0], self.iso_sigma18_co[0], 'b-') 

    return 

최저 바스 enter image description here

답변

1

가이드 heretight_layout을보십시오.) ( self.f0.tight_layout 상단에 제목을 설명하기 위해 약간의 패딩과 함께 일을 담당 : 여기

self.f0.tight_layout() 
+0

천재 감사합니다! 최종 답안과 아래 그림. –

0

최종 답변 : 귀하의 코드에서

self.f0를 만든 후이 줄을 추가합니다.

class CfmPlotter(): 

def __init__(self, fpath = None): 


    hl_inst = herron_lang.HL(temp = -40.0+273.15, accu= 0.0917, rho_o=350.) 

    self.z_hl, self.rho_hl = hl_inst(np.arange(0,400, 0.01)) 
    # fpath = "./DO_results/DO_tests_vary_tr_time/cfm_DO_trtime_1500/Goujon_DO_trtime_1500.hdf5" 
    self.fpath = fpath 
    f = h5py.File(fpath) 
    self.fs = os.path.split(fpath)[1] 
    print f.keys() 
    self.z = f["depth"][:] 
    self.rho = f["density"][:] 
    self.temperature = f["temperature"][:] 
    self.age = f["age"][:] 
    self.climate = f["Modelclimate"][:] 
    self.iso_sigmaD = f["iso_sigmaD"][:] 
    self.iso_sigma18 = f["iso_sigma18"][:] 
    self.iso_sigma17 = f["iso_sigma17"][:] 
    self.model_time = np.array(([a[0] for a in self.z[:]])) 

    f.close() 
    return 


def init_plot(self): 

    self.f0 = plt.figure(num = 0, figsize = (10, 6))#, dpi = 100) 
    self.f0.tight_layout(pad = 2.8) 
    self.f0.suptitle("CFM diffusion", fontsize=12) 
    self.ax01 = plt.subplot2grid((2, 3), (0, 0)) 
    self.ax02 = plt.subplot2grid((2, 3), (0, 1)) 
    self.ax03 = plt.subplot2grid((2, 3), (1, 0)) 
    self.ax04 = plt.subplot2grid((2, 3), (1, 1)) 
    self.ax05 = plt.subplot2grid((2, 3), (0, 2)) 
    self.ax06 = plt.subplot2grid((2, 3), (1, 2)) 


    self.ax01.set_ylim((300, 0)) 
    self.ax02.set_ylim((300,0)) 
    self.ax03.set_ylim((230, 250)) 
    self.ax04.set_ylim((0.08, 0.22)) 
    self.ax02.set_xlim((230, 250)) 
    self.ax03.set_xlim((self.model_time[0], self.model_time[-1])) 
    self.ax04.set_xlim((self.model_time[0], self.model_time[-1])) 
    self.ax05.set_ylim((300,0)) 
    self.ax05.set_xlim((0, 0.125)) 
    self.ax06.set_xlim((self.model_time[0], self.model_time[-1])) 
    self.ax06.set_ylim((0.08, 0.125)) 

    self.ax01.set_ylabel(r"Depth [m]") 
    self.ax01.set_xlabel(r"Density [$\mathrm{kgm}^{-3}$]") 
    self.ax02.set_ylabel(r"Depth [m]") 
    self.ax02.set_xlabel(r"Temperature [K]") 
    self.ax03.set_ylabel(r"Temperature Forcing [K]") 
    self.ax03.set_xlabel(r"Model Time [y]") 
    self.ax04.set_ylabel(r"Accumulation Forcing [$\mathrm{my}^{-1}$ ice eq.]") 
    self.ax04.set_xlabel(r"Model Time [y]") 
    self.ax05.set_ylabel(r"Depth [m]") 
    self.ax05.set_xlabel(r"Diffusion Length [m]") 
    self.ax06.set_ylabel(r"$\sigma'_{18}$ [m]") 
    self.ax06.set_xlabel(r"Model Time [y]") 

    # self.ax01.set_title('Density profile') 
    # self.ax02.set_title('Temp. profile') 
    # self.ax03.set_title('Temperature Forcing') 
    # self.ax04.set_title('Accum Forcing') 
    # self.ax05.set_title('Diffusion Length') 
    # self.ax06.set_title('Diffusion Length at CO') 

    self.hlp011 = self.ax01.plot(self.rho_hl*1000, self.z_hl, "r--") 
    self.p011, = self.ax01.plot(self.rho[0][1:], self.z[0][1:],'b-') 
    self.p012, = self.ax02.plot(self.temperature[0][1:], self.z[0][1:], 'k-') 
    self.p021, = self.ax03.plot(self.climate[0,0], self.climate[0,2],'k-') 
    self.p022, = self.ax04.plot(self.climate[0,0], self.climate[0,1], 'k-') 
    print(self.climate[0,1]) 
    self.p023, = self.ax05.plot(self.iso_sigmaD[0][1:], self.z[0][1:], 'r-') 
    self.p024, = self.ax05.plot(self.iso_sigma18[0][1:], self.z[0][1:], 'b-') 
    self.iso_sigma18_co = np.array((self.iso_sigma18[0][1:][self.rho[0][1:]>804.3][0],)) 
    self.p025, = self.ax06.plot(self.climate[0,0], self.iso_sigma18_co[0], 'b-') 

    return 

final plot