我非常喜欢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)
类型的函数?
答案 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}}