mons # just get the first 5 for illustration purposes df = DataFrame(randn(201, len(mons)), columns=mons, index=arange(1901, 2102))[:5] df.iloc[:, :5] # subset of the frame from mpl_toolkits.axes_grid1 import ImageGrid fig = figure(figsize=(20, 100)) grid = ImageGrid(fig, 111, nrows_ncols=(1, 1), direction='row', axes_pad=0.05, add_all=True, label_mode='1', share_all=False, cbar_location='right', cbar_mode='single', cbar_size='10%', cbar_pad=0.05) ax = grid[0] ax.set_title('A', fontsize=40) ax.tick_params(axis='both', direction='out', labelsize=20) im = ax.imshow(df.values, interpolation='nearest', vmax=df.max().max(), vmin=df.min().min()) ax.cax.colorbar(im) ax.cax.tick_params(labelsize=20) ax.set_xticks(arange(df.shape[1])) ax.set_xticklabels(mons) ax.set_yticks(arange(df.shape[0])) ax.set_yticklabels(df.index)