【问题标题】:Why are no colors shown in kde subplots in seaborn pairplot?为什么 seaborn pairplot 的 kde 子图中没有显示颜色?
【发布时间】:2017-10-18 03:15:58
【问题描述】:

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

使用参数创建 seaborn 配对图

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

返回对角线上带有 kde 图表的对图;但是,我错过了 kde 图中不同物种的不同颜色,散点图很好且色彩斑斓。

我的结果与 seaborn 文档一致。 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再给他们看吗?

【问题讨论】:

标签: python pandas matplotlib seaborn


【解决方案1】:

有一个the issuesns.pairplot 的对角线上产生色调。该问题现已在 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()

【讨论】:

  • 这是我正在寻找的预期结果 (+1),甚至在发布此问题时我更想知道 API 有什么问题。
  • 好吧,如果人们没有在问题中说明,你永远不知道他们是否知道解决方法。 ;-) @mwaskom 的评论可能已经充分回答了这个问题,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 2019-11-23
  • 2020-08-17
  • 2017-06-21
  • 2020-06-02
  • 1970-01-01
相关资源
最近更新 更多