【问题标题】:Reshape subplots on a Seaborn PairGrid重塑 Seaborn PairGrid 上的子图
【发布时间】:2014-12-16 20:34:07
【问题描述】:

我真的很喜欢 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) 类型的函数?

【问题讨论】:

    标签: python matplotlib seaborn


    【解决方案1】:

    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])
    

    【讨论】:

    • 是的,这就是我应该给出的答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多