【问题标题】:sns.pairplot shows density curve instead of histogramsns.pairplot 显示密度曲线而不是直方图
【发布时间】:2020-09-17 07:20:49
【问题描述】:

我的理解是,下面的代码将在对角线框中生成直方图。相反,我得到密度曲线?为什么是这样?如果我删除“hue”、“palette”和“diag_kws”,它会按预期生成直方图。有输入吗?

sns.pairplot(data=ins_pre,
        vars=["fatal_collisions", "premiums",'insurance_losses'],
        kind='scatter',
        hue='Region',
        palette='RdBu',
        diag_kws={'alpha':.5})

plt.show()
plt.clf()

绘制相同的数据,但删除 'hue'、'palette' 和 'diag_kws'

sns.pairplot(data=ins_pre,
        vars=["fatal_collisions", "premiums",'insurance_losses'],
        kind='scatter')

plt.show()
plt.clf()

【问题讨论】:

    标签: python-3.x seaborn


    【解决方案1】:

    来自documentation

    seaborn.pairplot(data, hue=None, hue_order=None, palette=None, vars=None, x_vars=None, 
    y_vars=None, kind='scatter', diag_kind='auto', markers=None, height=2.5, aspect=1,
    corner=False, dropna=True, plot_kws=None, diag_kws=None, grid_kws=None, size=None)
    
    [...]
    
    diag_kind{‘auto’, ‘hist’, ‘kde’, None}, optional
    Kind of plot for the diagonal subplots. The default depends on whether "hue" is used or not.
    

    所以,你应该像这样调用函数:

    sns.pairplot(data=ins_pre,
            vars=["fatal_collisions", "premiums",'insurance_losses'],
            kind='scatter',
            hue='Region',
            palette='RdBu',
            diag_kind='hist')
    

    【讨论】:

    • 非常感谢。根据文档,您所说的是正确的。但是,当我在云中的 Jupyter 笔记本上执行代码时,即使没有指定“diag_kind”参数,我也会得到直方图。在我的桌面 Jupyter 笔记本上没有这样做。不知道为什么..
    • 在文档中说:Kind of plot for the diagonal subplots. The default depends on whether "hue" is used or not.这和它有什么关系吗?
    • 重新检查。在带有“hue”的云中,它会生成直方图,而在桌面上,当不使用“diag_kind”时,它会生成密度图。
    猜你喜欢
    • 2012-11-16
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    相关资源
    最近更新 更多