def plot_monthly_returns_heatmap(returns, ax=None, **kwargs):
if ax is None:<EOL><INDENT>ax = plt.gca()<EOL><DEDENT>monthly_ret_table = ep.aggregate_returns(returns, '<STR_LIT>')<EOL>monthly_ret_table = monthly_ret_table.unstack().round(<NUM_LIT:3>)<EOL>sns.heatmap(<EOL>monthly_ret_table.fillna(<NUM_LIT:0>) *<EOL><NUM_LIT>,<EOL>annot=True,<EOL>annot_kws={"<STR_LIT:size>": <NUM_LIT:9>},<EOL>alpha=<NUM_LIT:1.0>,<EOL>center=<NUM_LIT:0.0>,<EOL>cbar=False,<EOL>cmap=matplotlib.cm.RdYlGn,<EOL>ax=ax, **kwargs)<EOL>ax.set_ylabel('<STR_LIT>')<EOL>ax.set_xlabel('<STR_LIT>')<EOL>ax.set_title("<STR_LIT>")<EOL>return ax<EOL>
Plots a heatmap of returns by month.

Parameters
----------
returns : pd.Series
    Daily returns of the strategy, noncumulative.
     - See full explanation in tears.create_full_tear_sheet.
ax : matplotlib.Axes, optional
    Axes upon which to plot.
**kwargs, optional
    Passed to seaborn plotting function.

Returns
-------
ax : matplotlib.Axes
    The axes that were plotted on.