首页 文章

为什么seaborn pairplot中的kde子图中没有显示颜色?

提问于
浏览 941
3

我正在看虹膜数据集(Fisher 1936) . 例如https://www.kaggle.com/uciml/iris/downloads/Iris.csv

使用参数创建seaborn pairplot

sns.pairplot(iris.drop("Id", axis=1), diag_kind="kde", hue="Species")

在对角线上返回带有kde图表的配对图;然而,我错过了kde图中不同物种的不同颜色,散射是精细和丰富多彩的 .

我的结果与seaborn docs一致 . http://seaborn.pydata.org/tutorial/axis_grids.html

g = sns.pairplot(iris, hue="species", palette="Set2", diag_kind="kde", size=2.5)

但是有几个不同的例子公布了颜色 . 例如http://www.arunprakash.org/2017/06/data-visualisation-seaborn.html

sns.pairplot(iris, hue='Species', diag_kind='kde', size=2);

https://www.kaggle.com/benhamner/python-data-visualizations

sns.pairplot(iris.drop("Id", axis=1), hue="Species", size=3, diag_kind="kde")

最新的seaborn API(版本0.8.0)有变化吗?是否故意删除了颜色?是否有一个kw再次显示它们?

1 回答

  • 5

    sns.pairplot 的对角线上有一个产生色调的the issue . 此问题现已在seaborn的0.8.1版中修复 .

    如果一个人仍然感兴趣,以下可能是一种解决方法 . 您可以自己创建基础 PairGrid 并分别映射对角线和off_diagonal元素 . 对于对角线元素,首先从当前循环器获取颜色,然后将此颜色用于 kdeplot .

    import matplotlib.pyplot as plt
    import seaborn as sns
    iris = sns.load_dataset("iris")
    
    g =  sns.PairGrid(iris, hue='species', size=2)
    
    def f(x, **kwargs):
        kwargs.pop("color")
        col = next(plt.gca()._get_lines.prop_cycler)['color']
        sns.kdeplot(x, color=col, **kwargs)
    
    g.map_diag(f)
    g.map_offdiag(plt.scatter)
    g.add_legend()
    plt.show()
    

    enter image description here

相关问题