def plotter(fdict): """ Go """ ctx = get_autoplot_context(fdict, get_description()) get_df(ctx) labels = {} data = {} for state, row in ctx['df'].iterrows(): val = row['departure'] data[state] = val if pd.isna(val): if pd.isna(row['avg']): subscript = 'M' else: subscript = "[-%.0f]" % (row['avg'], ) data[state] = 0 - row['avg'] else: subscript = "[%s%.0f]" % ("+" if val > 0 else "", val) subscript = "[0]" if subscript in ['[-0]', '[+0]'] else subscript labels[state] = "%s\n%s" % ('M' if pd.isna(row['thisval']) else int(row['thisval']), subscript) mp = MapPlot( sector='conus', title=ctx['title'], subtitle=ctx['subtitle'] ) levels = range(-40, 41, 10) cmap = plt.get_cmap(ctx['cmap']) cmap.set_bad('white') mp.fill_states(data, ilabel=True, labels=labels, bins=levels, cmap=cmap, units='Absolute %', labelfontsize=16) return mp.fig, ctx['df']
def plotter(fdict): """ Go """ ctx = get_autoplot_context(fdict, get_description()) get_df(ctx) labels = {} data = {} for state, row in ctx["df"].iterrows(): val = row["departure"] data[state] = val if pd.isna(val): if pd.isna(row["avg"]): subscript = "M" else: subscript = "[-%.0f]" % (row["avg"], ) data[state] = 0 - row["avg"] else: subscript = "[%s%.0f]" % ("+" if val > 0 else "", val) subscript = "[0]" if subscript in ["[-0]", "[+0]"] else subscript labels[state] = "%s\n%s" % ( "M" if pd.isna(row["thisval"]) else int(row["thisval"]), subscript, ) mp = MapPlot(sector="conus", title=ctx["title"], subtitle=ctx["subtitle"]) levels = range(-40, 41, 10) cmap = plt.get_cmap(ctx["cmap"]) cmap.set_bad("white") mp.fill_states( data, ilabel=True, labels=labels, bins=levels, cmap=cmap, units="Absolute %", labelfontsize=16, ) return mp.fig, ctx["df"]
def main(): """Go Main Go""" data = get_data() mp = MapPlot(sector='midwest', title='8 July 2018 USDA NASS Corn Progress Percent Silking', subtitle=('Top value is 2018 percentage, bottom value is ' 'departure from 2008-2017 avg')) data2 = {} labels = {} for state in data: val = data[state]['d2017'] - data[state]['avg'] data2[state] = val labels[state.encode('utf-8')] = "%i%%\n%s%.1f%%" % (data[state]['d2017'], "+" if val > 0 else "", val) print(labels) levels = range(-40, 41, 10) mp.fill_states(data2, ilabel=True, labels=labels, bins=levels, cmap=plt.get_cmap('RdBu_r'), units='Absolute %', labelfontsize=16) mp.postprocess(filename='test.png') mp.close()