简体   繁体   中英

Why are no colors shown in kde subplots in seaborn pairplot?

I am looking at the iris data set (Fisher 1936). eg https://www.kaggle.com/uciml/iris/downloads/Iris.csv

Creating the seaborn pairplot with the arguments

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

return a pairplot with kde charts on the diagonals; However, I am missing the different colors for the different species in the kde plots, the scatters are fine & colorful.

My result is inline with the seaborn docs. http://seaborn.pydata.org/tutorial/axis_grids.html

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

But there a several different examples published showong the colors. eg http://www.arunprakash.org/2017/06/data-visualisation-seaborn.html

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

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

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

Has there been a recent change in the seaborn API (ver 0.8.0) ? Have the colors been removed on purpose? Is there a kw to the show them again?

There was an the issue with producing hues on the diagonal of sns.pairplot . This issue is now fixed in version 0.8.1 of seaborn.

In case one is still interested, the following may be a workaround. You may create the underlying PairGrid yourself and map the diagonal and the off_diagonal elements individually. For the diagonal elements, get a color from the current cycler first, then use this color for the 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()

在此输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM