重塑Seaborn PairGrid上的子图

Bri*_*gan 1 python matplotlib seaborn

我非常喜欢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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,我最好将这个数字重新定位为2列1行.看起来这些子图存在于其中g.axes,但是如何将它们传递回一种plt.subplots(1,2)函数?

hit*_*tzg 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)
Run Code Online (Sandbox Code Playgroud)

(请注意,您还必须更改x_jittery_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])
Run Code Online (Sandbox Code Playgroud)