Source code for vtra.plot.rice_atlas_maps

"""Rice atlas maps
"""
import os
import sys

import cartopy.crs as ccrs
import cartopy.io.shapereader as shpreader
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
from vtra.utils import *

mpl.style.use('ggplot')
mpl.rcParams['font.size'] = 11.

mpl.rcParams['axes.labelsize'] = 14.
mpl.rcParams['xtick.labelsize'] = 11.
mpl.rcParams['ytick.labelsize'] = 11.
mpl.rcParams['savefig.pad_inches'] = 0.05




[docs]def main(): config = load_config() crop_month_fields = ['P_Jan', 'P_Feb', 'P_Mar', 'P_Apr', 'P_May', 'P_Jun', 'P_Jul', 'P_Aug', 'P_Sep', 'P_Oct', 'P_Nov', 'P_Dec'] title_cols = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] for cr in range(len(crop_month_fields)): rice_month_file = os.path.join( config['paths']['data'], 'rice_atlas_vietnam', 'rice_production.shp') ax = get_axes() plot_basemap(ax, config['paths']['data']) scale_bar(ax, location=(0.8, 0.05)) plot_basemap_labels(ax, config['paths']['data']) proj = ccrs.PlateCarree() for record in shpreader.Reader(rice_month_file).records(): geom = record.geometry region_val = 100.0 * \ record.attributes[crop_month_fields[cr]]/record.attributes['P_total'] if region_val: if region_val > 0 and region_val <= 20: color = '#ffffcc' # TODO ax.add_geometries([geom], crs=proj, edgecolor='#ffffff', facecolor=color, label='0 to 20') elif region_val > 20 and region_val <= 40: color = '#c2e699' # TODO ax.add_geometries([geom], crs=proj, edgecolor='#ffffff', facecolor=color, label='20 to 40') if region_val > 40 and region_val <= 60: color = '#78c679' # TODO ax.add_geometries([geom], crs=proj, edgecolor='#ffffff', facecolor=color, label='40 to 60') elif region_val > 60 and region_val <= 80: color = '#31a354' # TODO ax.add_geometries([geom], crs=proj, edgecolor='#ffffff', facecolor=color, label='60 to 80') elif region_val > 80 and region_val <= 100: color = '#31a354' # TODO ax.add_geometries([geom], crs=proj, edgecolor='#ffffff', facecolor=color, label='80 to 100') else: ax.add_geometries([geom], crs=proj, edgecolor='#ffffff', facecolor='#ffffcc', label='0 to 20') colors = ['#ffffcc', '#c2e699', '#78c679', '#31a354', '#31a354'] labels = ['0 to 20', '20 to 40', '40 to 60', '60 to 80', '80 to 100'] # Legend legend_handles = [] for c in range(len(colors)): legend_handles.append(mpatches.Patch(color=colors[c], label=labels[c])) ax.legend( handles=legend_handles, title='Percentage production', loc='center left' ) plt.title(title_cols[cr], fontsize=14) output_file = os.path.join(config['paths']['figures'], 'rice_production_{}.png'.format(title_cols[cr])) save_fig(output_file) plt.close()
if __name__ == '__main__': main()