I would like to add a single label for the x axis, and a single label for the y axis.
Also, tips for having the colorbar title a little more space from the colorbar would be appreciated.
I've marked the places that could use help with # <---- Help Please!
# this chunk seems to be necessary for plotting in my virtualenv.
import matplotlib
matplotlib.use('TkAgg')
% matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import itertools
import seaborn as sns
import platform
print("python version {}".format(platform.python_version()))
# python version 3.5.1
print("seaborn version {}".format(sns.__version__))
# seaborn version 0.7.0
methods=['method 1', 'method2', 'method 3', 'method 4']
times = range(0, 100, 10)
data = pd.DataFrame(list(
itertools.product(methods, times, times)))
data.columns = ['method','x var', 'y var']
data['x var'] = data['x var']*10
data['score'] = np.random.sample(data.shape[0])
print(data.head())
def facet_heatmap(data, color, **kws):
data = data.pivot(index='y var', columns='x var',
values='score')
# Pass kwargs to heatmap
sns.heatmap(data, cmap='summer', **kws)
with sns.plotting_context(font_scale=5.5):
g = sns.FacetGrid(data, col="method", col_wrap=2,
size=3, aspect=1)
# Create a colorbar axes
cbar_ax = g.fig.add_axes([.96, .3, .02, .4],
title='could use \n more space') # <---- Help Please!
# Specify the colorbar axes and limits
g = g.map_dataframe(facet_heatmap,
cbar_ax=cbar_ax,
vmin=0, vmax=1)
# add a supertitle, you bet.
plt.subplots_adjust(top=0.85)
supertitle = "This is a supertitle, you bet."
g.fig.suptitle(supertitle, size=18)
# rotate x labels
g.set_xticklabels(rotation=90)
g.set_titles(col_template="{col_name}",
fontweight='bold', fontsize=18)
g.fig.subplots_adjust(right=.9) # Add space so the colorbar doesn't overlap the plot
# ---- add one label for x axis and one for y-axis -----
g.fig.text(0.4, 0.1, s='way too high!',fontdict={'fontsize':16}) # <---- Help Please!
plt.figtext(0.4,0.02,"this looks bad",fontdict={'fontsize':16}) # <---- Help Please!
# add y-axis label too [enter image description here][1]# <---- Help Please!
Note: I am building on top of this post, and have added some handy things such as a supertitle, rotated x-labels, and a colorbar title.
As per the comments from @mwaskom, you'll have to use g.fig.text()
to add the label and g.fig.subplots_adjust()
to add space on the left and bottom to avoid overlap.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With