labs = [l.get_label() for l in lns] plt.legend(lns, labs,loc = 'lower left', fancybox=True, framealpha=0.5,prop={'size':8}) ### #middle panel (linear model etc.) ### ax21 = fig.add_subplot(312) #smooth volcanic data to 7 years smth = 7 start_year = 860 end_year = 1840 volc_year = voln_n[(start_year-voln_n[0,0])*36:(end_year-voln_n[0,0])*36,0] vns = running_mean_post.running_mean_post(voln_n[(start_year-voln_n[0,0])*36:(end_year-voln_n[0,0])*36,1],smth*36.0) ### #produce linear model of tas based on smoothed volcanics ### y2 = mean_data2.copy() model_amo = np.interp(volc_year,yrs,y2) y = model_amo x1 = vns x = sm.add_constant(x1) model = sm.OLS(y,x) results = model.fit() ### #plot tas and linear model of tas
data3 = np.genfromtxt(file2) data4 = np.genfromtxt(file3) data_tmp = np.zeros([data1.shape[0],2]) data_tmp[:,0] = data1[:,1] data_tmp[:,1] = data2[:,2] data = np.mean(data_tmp,axis = 1) data_final = data1.copy() data_final[:,1] = data volcanic_smoothing = 65 #yrs volc_years = data1[:,0] loc = np.where((volc_years >= np.min(model_years)) & (volc_years <= np.min(model_years))) volc = running_mean_post.running_mean_post(data_final_t[loc],12.0*volcanic_smoothing) volc_mean = np.mean(volc) high_volc = np.where(volc > volc_mean) low_volc = np.where(volc < volc_mean) high_volc_data = np.empty([np.shape(cubes[0][0].data)[0],np.shape(cubes[0][0].data)[1],np.size(cubes)]) low_volc_data = high_volc_data.copy() for i,cube in enumerate(cubes): tmp = cube[high_volc].collapsed('time',iris.analysis.MEAN) high_volc_data[i,:,:] = tmp.data tmp = cube[low_volc].collapsed('time',iris.analysis.MEAN) low_volc_data[i,:,:] = tmp.data high_volc_data_mean = np.mean(high_volc_data,axis = 0) low_volc_data_mean = np.mean(low_volc_data,axis = 0)
data_tmp = np.zeros([data1.shape[0],2]) data_tmp[:,0] = data1[:,1] data_tmp[:,1] = data2[:,1] data = np.mean(data_tmp,axis = 1) data_final = data1.copy() data_final[:,1] = data volcanic_smoothing = 5 #yrs volc_years = data_final[:,0] loc = np.where((volc_years >= 850) & (volc_years <= 1849))[0] volc_tmp = running_mean_post.running_mean_post(data_final[loc,1],36.0*volcanic_smoothing) volc_years = data_final[np.arange(np.size(volc_tmp)),0] yrs = np.floor(data_final[np.arange(np.size(volc_tmp)),0]) yrs_unique = np.unique(yrs) data_ann = np.empty([np.size(yrs_unique),2]) for i,y in enumerate(yrs_unique): loc = np.where(yrs == y)[0] data_ann[i,0] = y data_ann[i,1] = np.mean(volc_tmp[loc]) volc = data_ann[:,1] volc_mean = np.mean(volc)
volc_yrs = voln_n[:,0] voln_data = voln_n[:,1] loc = np.where((volc_yrs >= 950) & (volc_yrs < 1750)) volc_yrs = volc_yrs[loc] voln_data = voln_data[loc] volc_yrs = np.floor(volc_yrs) volc_yrs2 = np.unique(volc_yrs) voln_data2 = volc_yrs2.copy() for i,temp_yrs in enumerate(volc_yrs2): loc = np.where(volc_yrs == temp_yrs) voln_data2[i] = np.mean(voln_data[loc]) voln_data2 = rmp.running_mean_post(voln_data2,1) loc = np.where(voln_data2 > np.median(voln_data2)) tmp_years = years[100:-100] high_years = tmp_years[loc[0]] loc = np.where(voln_data2 < np.median(voln_data2)) tmp_years = years[100:-100] low_years = tmp_years[loc[0]] pr_high_volc = np.zeros([models.size,180,360]) pr_high_volc[:] = np.NAN pr_low_volc = pr_high_volc.copy() for i,model in enumerate(models): print model
smth =7 smth2 =7 volc_yr = voln_n[:,0] loc_v = np.where((volc_yr <= end_date) & (volc_yr >= start_date)) volc_yr_II = volc_yr[loc_v] tmp = data3_data tmp_yr = data3_yr tmp = scipy.signal.filtfilt(b, a, tmp) tmp = scipy.signal.filtfilt(b1, a1, tmp) data1_int = np.interp(volc_yr_II,tmp_yr,tmp) data1_int = rmp.running_mean_post(data1_int,smth2*36.0) #data1_int[np.where(np.isnan(data1_int))] = 0.0 mann_amo = np.interp(volc_yr_II,amo_yr,amo_data) vns = rmp.running_mean_post(voln_n[loc_v[0],1],smth*36.0) x1 = vns x2 = data1_int y = mann_amo x = np.column_stack((x1,x2)) #stack explanatory variables into an array x = sm.add_constant(x) #add constant to first column for some reasons model = sm.OLS(y,x) results = model.fit() x1b = vns