重塑Seaborn PairGrid上的子图

时间:2014-12-16 20:34:08

标签: 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)

enter image description here

但是,我最好将这个数字重新定位为2列1行。这些子图显示在g.axes内,但如何将它们传递回plt.subplots(1,2)类型的函数?

1 个答案:

答案 0 :(得分: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]) 创建图:

{{1}}