def get_clevels(): # Independently test creating an array # of levels centered about 0 to plot # Test 1 data = np.array([ 7.89643761, 2.98214969, 4.04690632, 1.1047872, -3.42288272, 1.0111309, 8.02330262, -8.03515159, -8.89454837, 2.45191295, 9.43015692, -0.53815455, 4.34984478, 4.54528989, -1.35164646 ]) expected_clevels = np.array([-10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10]) test_clevels = plot_util.get_clevels(data) assert(test_clevels == expected_clevels)
ax.set_yticks(fcst_var_levels_int) ax.set_yticklabels(fcst_var_levels_int) ax.set_ylim([fcst_var_levels_int[0],fcst_var_levels_int[-1]]) if (stat == 'fbar_obar' or stat == 'orate_frate' or stat == 'baser_frate'): logger.debug("Plotting model "+str(model_num)+" " +model_name+" - obs " +"with name on plot "+model_plot_name+" " +"- obs") ax.set_title(model_plot_name+' - obs', loc='left') model_obs_diff = ( model_stat_values_array - stat_values_array[1,model_idx,:,:] ) if model_num == 1: clevels_diff = plot_util.get_clevels(model_obs_diff) CF2 = ax.contourf(xmesh, ymesh, model_obs_diff, levels=clevels_diff, cmap=cmap_diff, locator= matplotlib.ticker.MaxNLocator( symmetric=True ), extend='both') C2 = ax.contour(xmesh, ymesh, model_obs_diff, levels=CF2.levels, colors='k', linewidths=1.0) ax.clabel(C2, C2.levels, fmt='%1.2f', inline=True, fontsize=12.5) else:
ax_cntrl_plot_data_levels, ax_cntrl_plot_levels, ax_cntrl_plot_cmap, latlon_area ) subplot_CF_dict[ax_cntrl_subplot_loc] = CF_ax_cntrl # Set up model subplot map and title if verif_case_type == 'ens': subplot_num = model_num - 1 else: subplot_num = model_num if stat == 'inc': print("Plotting "+model+" increments") subplot_title = '(A-B) '+model_plot_name stat_data = (model_var_levels_zonalmean_OBAR[model_num-1,:,:] - model_var_levels_zonalmean_FBAR[model_num-1,:,:]) if model_num == 1: levels_plot = plot_util.get_clevels(stat_data) cmap_plot = plt.cm.PiYG_r elif stat == 'rmse': if model_num == 1: print("Plotting "+model+" increment RMSE") model1 = model model1_plot_name = model_plot_name subplot_title = 'RMSE(A-B) '+model1_plot_name stat_data = np.sqrt( (model_var_levels_zonalmean_OBAR[model_num-1,:,:] - model_var_levels_zonalmean_FBAR[model_num-1,:,:])**2 ) levels_plot = np.nan cmap_plot = plt.cm.BuPu model1_stat_data = stat_data else:
ax.set_yticks(fcst_var_levels) ax.set_yticklabels(fcst_var_levels) ax.set_ylim([fcst_var_levels[0],fcst_var_levels[-1]]) if ax.is_first_col(): ax.set_ylabel("Pressure Level (hPa)") else: plt.setp(ax.get_yticklabels(), visible=False) if stat == "fbar_obar": logger.debug("Plotting model "+str(model_num) +" "+model_name+" - obs." +" with name on plot "+model_plot_name +" - obs.") ax.set_title(model_plot_name+" - obs.", loc='left') model_obs_diff = model_level_mean_data - obs_level_mean_data if model_num == 1: clevels_diff = plot_util.get_clevels(model_obs_diff) CF1 = ax.contourf(xx, yy, model_obs_diff, levels=clevels_diff, cmap=cmap_diff, locator=matplotlib.ticker.MaxNLocator(symmetric=True), extend='both') #C1 = ax.contour(xx, yy, model_obs_diff, # levels=CF1.levels, # colors='k', # linewidths=1.0) #ax.clabel(C1, # C1.levels, # fmt='%1.2f', # inline=True, # fontsize=12.5) else:
else: plt.setp(ax.get_xticklabels(), visible=False) ax.set_yticks(leads) ax.set_ylim([leads[0], leads[-1]]) if ax.is_first_col(): ax.set_ylabel("Forecast Hour") else: plt.setp(ax.get_yticklabels(), visible=False) if stat == "fbar_obar": logger.debug("Plotting model " + str(model_num) + " " + model_name + " - obs." + " with name on plot " + model_plot_name + " - obs.") ax.set_title(model_plot_name + " - obs.", loc='left') model_obs_diff = model_thresh_mean_data - obs_thresh_mean_data if model_num == 1: clevels_diff = plot_util.get_clevels(model_obs_diff) CF1 = ax.contourf( xx, yy, model_obs_diff, levels=clevels_diff, cmap=cmap_diff, locator=matplotlib.ticker.MaxNLocator(symmetric=True), extend='both') #C1 = ax.contour(xx, yy, model_obs_diff, # levels=CF1.levels, # colors='k', # linewidths=1.0) #ax.clabel(C1, # C1.levels, # fmt='%1.2f',
ax.set_yticklabels(fcst_lead_timedeltas_str) ax.set_ylim([fcst_lead_timedeltas[0], fcst_lead_timedeltas[-1]]) if (stat == 'fbar_obar' or stat == 'orate_frate' or stat == 'baser_frate'): logger.debug("Plotting model "+str(model_num)+" " +model_name+" - obs " +"with name on plot "+model_plot_name+" " +"- obs") ax.set_title(model_plot_name+' - obs', loc='left') model_obs_diff = ( model_avg_data[0,:,:] - model_avg_data[1,:,:] ) if model_num == 1: clevels_diff = plot_util.get_clevels(model_obs_diff) CF2 = ax.contourf(xmesh, ymesh, model_obs_diff, levels=clevels_diff, cmap=cmap_diff, locator= matplotlib.ticker.MaxNLocator( symmetric=True ), extend='both') C2 = ax.contour(xmesh, ymesh, model_obs_diff, levels=CF2.levels, colors='k', linewidths=1.0) ax.clabel(C2, C2.levels, fmt='%1.2f', inline=True, fontsize=12.5) else: