1

我真的很喜欢 Seaborn 的PairGrid的功能。但是,我无法让我满意地重塑子图。例如,下面的代码将返回一个包含 1 列和 2 行的图形,反映 1 个 x 变量和 2 个 y 变量。

import seaborn as sns
tips = sns.load_dataset('tips')
g = sns.PairGrid(tips,y_vars=['tip','total_bill'],x_vars=['size'], hue='sex')
g.map(sns.regplot,x_jitter=.125)

在此处输入图像描述

但是,我最好将此图形重新定向为 2 列和 1 行。这些子图似乎存在于 内g.axes,但我如何将它们传递回某种plt.subplots(1,2)函数?

4

1 回答 1

5

PairGrid选择此对齐方式是因为两个图具有相同的 x 轴。因此,获取横向图的最简单方法是交换 x 和 y:

import seaborn as sns
tips = sns.load_dataset('tips')
g = sns.PairGrid(tips,x_vars=['tip','total_bill'],y_vars=['size'], hue='sex')
g.map(sns.regplot,y_jitter=.125)

(请注意,您还必须进行更改x_jitter才能y_jitter获得相同的结果。)

如果您不想这样做,那么我认为PairGrid这不是适合您的工具。您也可以只使用两个子图并使用以下方法创建图sns.regplot

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')
male = tips[tips.sex=='Male']
female = tips[tips.sex=='Female']

with sns.color_palette(n_colors=2):
    fig, axs = plt.subplots(1,2)
    sns.regplot(x='size', y='tip', data=male, x_jitter=.125, ax=axs[0])
    sns.regplot(x='size', y='tip', data=female, x_jitter=.125, ax=axs[0])
    sns.regplot(x='size', y='total_bill', data=male, x_jitter=.125, ax=axs[1])
    sns.regplot(x='size', y='total_bill', data=female, x_jitter=.125, ax=axs[1])
于 2014-12-17T08:34:19.467 回答