def plot_swe_timeseries(ax, crcm5_manager, areas2d, model_data, mask=None): swe_obs_manager = SweDataManager(var_name="SWE") assert isinstance(crcm5_manager, Crcm5ModelDataManager) assert isinstance(ax, Axes) if mask is None: i_model0, j_model0 = model_data.metadata["ix"], model_data.metadata[ "jy"] mask = crcm5_manager.get_mask_for_cells_upstream(i_model0, j_model0) #print model_data.time[0], model_data.time[-1] #time window, inclusive start_date = model_data.time[0] end_date = model_data.time[-1] ts_swe_mod = crcm5_manager.get_monthly_means_over_points( mask, "I5", areas2d=areas2d, start_date=start_date, end_date=end_date) #cruManager = CRUDataManager(path="data/cru_data/CRUTS3.1/cru_ts_3_10.1901.2009.pre.dat.nc", var_name="pre") ts_swe_obs = swe_obs_manager.get_monthly_timeseries_using_mask( mask, crcm5_manager.lons2D, crcm5_manager.lats2D, areas2d, start_date=model_data.time[0], end_date=model_data.time[-1]) mod = np.array(ts_swe_mod.data) / 1000.0 #convert to m * m^2 sta = np.array(ts_swe_obs.data) / 1000.0 #convert to m * m^2 print(min(mod), max(mod)) print(min(sta), max(sta)) ax.annotate("r = {0:.2f}".format(float(np.corrcoef([mod, sta])[0, 1])), xy=(0.1, 0.8), xycoords="axes fraction", zorder=5) ax.plot(ts_swe_mod.time, (mod - sta), color="k", linewidth=2) ax.plot(ts_swe_mod.time, mod, color="b") ax.plot(ts_swe_mod.time, sta, color="r") ax.xaxis.set_major_formatter(DateFormatter("%y/%m")) ax.xaxis.set_major_locator(MonthLocator(bymonth=list(range(1, 13, 2)))) ax.set_title("CRCM5 versus Analysis (Ross Brown)") ax.set_ylabel("SWE, m^3, SWEmod - SWEobs")