Seaborn绘制KDE图时出错:无法使用宽格式数据`hue`分配以下变量。

3

我有一个带有两列(typeIR)的pandas数据框 df,就像这个:

   type    IR
0   a      0.1
1   b      0.3
2   b      0.2
3   c      0.8
4   c      0.5
      ...

我想为每个类型绘制三个分布图,其值为IR,所以我写道:

sns.displot(df, kind="kde", hue='type', rug=True)

但是我得到了这个错误:无法使用宽格式数据“hue”分配以下变量

有什么想法吗?


编辑:

我的真实数据框看起来像

pd.DataFrame({"type": ["IR orig", "IR orig", "IR orig", "IR trans", "IR trans", "IR trans", "IR perm", "IR perm", "IR perm", "IR perm", "IR perm"],
              "IR": [1.41, 1.42, 1.32, 0.0, 0.44, 0.0, 1.41, 1.31, 1.41, 1.37, 1.34]
})

但是使用sns.displot(df, x='IR', kind="kde", hue='type', rug=True)时,出现了ValueError: cannot reindex on an axis with duplicate labels


1
你的 x 在哪里?尝试这样做:sns.displot(df1, x='IR', kind="kde", hue='type', rug=True) - I'mahdi
1个回答

2

使用:

df = pd.DataFrame({'type': {0: 'a', 1: 'b', 2: 'b', 3: 'c', 4: 'c'}, 
                   'IR': {0: 0.1, 1: 0.3, 2: 0.2, 3: 0.8, 4: 0.5}})
print (df)
  type   IR
0    a  0.1
1    b  0.3
2    b  0.2
3    c  0.8
4    c  0.5

sns.displot(df.reset_index(drop=True), x='IR', kind="kde", hue='type', rug=True)

pic


谢谢,但我得到了“ValueError:无法在具有重复标签的轴上重新索引”的错误。 - Palinuro
@Palinuro - 我添加了一些样本数据,你可以测试一下吗? - jezrael
显然,这个例子在我在ipython上运行时与你的解决方案一起工作,但是在我的代码中却出现“ValueError:cannot reindex on an axis with duplicate labels”的错误。我刚刚编辑了我的问题并加入了这个信息。 - Palinuro
4
@Palinuro 您可以尝试使用sns.displot(df.reset_index(), x='IR', kind="kde", hue='type', rug=True)。当索引包含一些重复值时,某些版本的seaborn/pandas会存在问题。 - JohanC
1
@JohanC - 谢谢,我使用sns.displot(df.reset_index(drop=True), x='IR', kind="kde", hue='type', rug=True) - jezrael
@jezrael,当我尝试根据你的答案调整我的代码时,我得到了与之前完全相同的错误信息(原帖中的那个),有什么想法为什么会这样? - bernando_vialli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接