【问题标题】:How to label categorical variable in barplot?如何在条形图中标记分类变量?
【发布时间】:2019-04-05 18:12:51
【问题描述】:

我使用 python 为一些数据开发了一个条形图。你如何为分类值开发标签?

数据代表 0="Female" 和 1="Male"。开发的条形图仅显示 0 和 1,但我想表示为女性和男性。

使用以下代码,我得到以下输出:

sns.barplot(x=df.cp, y=df.chol, hue=df.sex, palette='spring')
plt.xlabel("Chest Pain Type")
plt.ylabel("Serum Cholesterol")
plt.show()

我尝试将这段代码添加到上面,但输出不符合预期,并且缺少颜色区分:

plt.legend(title="sex", loc="upper right", labels=["Female", "Male"])

谢谢

【问题讨论】:

  • df 长什么样子?
  • 你应该可以做到sns.barplot(x="cp", y="chol", hue="sex", data=df)

标签: python bar-chart seaborn


【解决方案1】:

seaborn 的想法主要是您可以直接使用数据框的列。因此,获得正确标签的最简单解决方案是将这些标签放在您提供给数据框的数据中。例如。拥有将数字映射到名称的字典

{1 : "male", 0 : "female"}

您可以在绘图前替换相应列中的数据:

sns.barplot(x="cp", y="chol", hue="sex", palette='spring', 
            data=df.replace({"sex" : {1 : "male", 0 : "female"}}))

【讨论】:

  • 好答案,我显然没有处理 sex 列不是分类的。
  • 我尝试使用 hue_order 包含标签,但图表中缺少条形,它几乎就像一个空图表。
  • 我怀疑 hue_order 不适用于 this 解决方案。 (请注意它与其他答案有何不同)。但如果您遇到更多问题,您可以提供minimal reproducible example
猜你喜欢
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 2020-11-04
  • 2020-03-17
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
相关资源
最近更新 更多