Seaborn FacetGrid子图(布局/间距?)需要一个共享的x轴标签

6

我希望为x轴添加单个标签,为y轴添加单个标签。

此外,如果能提供调整色条标题与色条相隔距离的提示,将不胜感激。

我已经用# <---- 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! 

注意:我正在基于这篇文章的基础上进行构建,并添加了一些方便的功能,例如超级标题、旋转的x标签和颜色条标题。

4
您需要使用 g.fig.text - mwaskom
谢谢确认,@mwaskom。我会学习如何添加文本,而不会重叠其他绘图图形。 - jmatsen
2
答案基本上与之前的相同:您需要使用 g.fig.subplots_adjust,但现在需要在左侧和底部添加空间。 - mwaskom
1个回答

1
根据@mwaskom的评论,您需要使用g.fig.text()来添加标签,并使用g.fig.subplots_adjust()在左侧和底部添加空间以避免重叠。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接