Beispiel #1
0
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)
Beispiel #2
0
 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:
Beispiel #3
0
         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:
Beispiel #5
0
 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: