def visualize_and_save_independence(independence: 'xr.DataArray', cfg: dict, ancestors: list): """Visualize independence.""" variable = independence.variable_group labels = list(independence.model_ensemble.values) figure, axes = plt.subplots(figsize=(15, 15), subplot_kw={'aspect': 'equal'}) chart = sns.heatmap( independence, linewidths=1, cmap="YlGn", xticklabels=labels, yticklabels=labels, cbar_kws={'label': f'Euclidean distance ({independence.units})'}, ax=axes, ) chart.set_title(f'Distance matrix for {variable}') filename_plot = get_plot_filename(f'independence_{variable}', cfg) figure.savefig(filename_plot, dpi=300, bbox_inches='tight') plt.close(figure) filename_data = get_diagnostic_filename(f'independence_{variable}', cfg, extension='nc') independence.to_netcdf(filename_data) caption = f'Euclidean distance matrix for variable {variable}' log_provenance(caption, filename_plot, cfg, ancestors) log_provenance(caption, filename_data, cfg, ancestors)
def visualize_and_save_weights(weights: 'xr.DataArray', cfg: dict, ancestors: list): """Visualize weights.""" label = 'Weights' filename_plot = get_plot_filename('weights', cfg) barplot(weights, label, filename_plot) filename_data = get_diagnostic_filename('weights', cfg, extension='nc') weights.to_netcdf(filename_data) caption = 'Weights' log_provenance(caption, filename_plot, cfg, ancestors) log_provenance(caption, filename_data, cfg, ancestors)
def visualize_and_save_performance(performance: 'xr.DataArray', cfg: dict, ancestors: list): """Visualize performance.""" label = 'RMS error' variable_group = performance.variable_group filename_plot = get_plot_filename(f'performance_{variable_group}', cfg) barplot(performance, label, filename_plot) filename_data = get_diagnostic_filename(f'performance_{variable_group}', cfg, extension='nc') performance.to_netcdf(filename_data) caption = f'Performance metric {label} for variable group {variable_group}' log_provenance(caption, filename_plot, cfg, ancestors) log_provenance(caption, filename_data, cfg, ancestors)