#!/usr/bin/env python # coding: utf-8 # In[ ]: import sys, datetime, copy, os from dateutil.relativedelta import relativedelta import numpy as np; np.set_printoptions(threshold=sys.maxsize) import pandas as pd import matplotlib.pyplot as plt import matplotlib.colors as clr import seaborn as sns from matplotlib.colors import ListedColormap from netCDF4 import Dataset nc = Dataset('/work/users/hmo/remoclic/Phuong/PHD/BC_2023/Tan/NC1/All_Cha_landpoints.nc','r') Chars = nc.variables['cha'][:] Model = nc.variables['mem'][:] Npoint = nc.variables['point'][:] aph = nc.variables['aph'][:] org = nc.variables['org'][:] qm = nc.variables['qm'][:] xlabels = ["CNRM","CSIRO","ECEA","GFDL","HadG","MPI","ENS","ENS_1"] title = ["DF","DD","DS","DI"] #Amax = [ 7, 150, 4000, 85, 35, 35 ] Amax = [ 20, 80, 100, 10 ] Xlab=[] Del1=[] Del2=[] Del3=[] for i in range(0,len(xlabels)): del1=0 + i*2 del2=2 + i*2 del3=4 + i*2 xlab=i+1 Del1.append(del1) Del2.append(del2) Del3.append(del3) Xlab.append(xlab) nbox = len(Chars) fig, ax = plt.subplots(nbox,figsize=(10,8),sharey=False) plt.subplots_adjust(hspace=0.4) plt.subplots_adjust(top=0.8) MDF = [] for k in range(len(Chars)): data1 = pd.DataFrame(aph[:,:,k]).assign(Trial='aph') data2 = pd.DataFrame(org[:,:,k]).assign(Trial='org') data3 = pd.DataFrame(qm[:,:,k]).assign(Trial='qm') data1[data1 == -99.0] = np.nan data2[data2 == -99.0] = np.nan data3[data3 == -99.0] = np.nan cdf = pd.concat([data1, data2, data3]) mdf = pd.melt(cdf, id_vars=['Trial'], var_name=['Number']) MDF.append(mdf) # sns.boxplot(flierprops={"marker": "+"}) # sns.boxplot(ax = ax[k], data = MDF[k], x = 'Number', y = 'value', hue = 'Trial', width = 0.5) sns.boxplot(ax = ax[k], data = MDF[k], x = 'Number', y = 'value', hue = 'Trial', flierprops={"marker": "+"}, width = 0.5) h,l = ax[0].get_legend_handles_labels() ax[k].get_legend().remove() fig.legend(h,l, loc = "center right", fontsize = 10) fig.savefig('Box_plot_Chars_test.pdf', bbox_inches="tight", pad_inches=.01, dpi=300) ############ #sns.boxplot(ax = ax[k], data = MDF[k], x = 'Number', y = 'value', hue = 'Trial', flierprops={"marker": "+"}) # h,l = ax[0].get_legend_handles_labels() # ax[k].get_legend().remove() #fig.legend(h,l, loc = "center right", fontsize = 20)