Seaborn:如何在条形图中用 X 轴中的文本替换索引?

Posted

技术标签:

【中文标题】Seaborn:如何在条形图中用 X 轴中的文本替换索引?【英文标题】:Seaborn: How to replace index with text in X-Axis in barplot? 【发布时间】:2022-01-24 00:28:22 【问题描述】:

我有一个包含 category 列的数据集,其中包含表示类标签的整数值,即 0,1,2.....

我有一个单独的文件,其中包含该类别的文本标签,即针对索引 0,它包含 classA 等等。我想使用 seaborn 和以下代码绘制条形图。

import seaborn as sns
train_df = pd.read_csv("unclean_text.csv", sep='\t')
label_text = pd.read_csv("labels.csv")
is_dup = train_df['category'].value_counts()

plt.figure(figsize=(8,4))
sns.barplot(is_dup.index, is_dup.values, alpha=0.8, color=color[1])
plt.show()

它正确地绘制了每个类频率的条形图。

但我想要 x 轴上的文本标签而不是 label_text 中的索引值,这也是长度为 19 (0-18) 的列向量。怎么做?

【问题讨论】:

【参考方案1】:

sns.barplot() 将返回绘图的轴。您可以使用它来设置刻度标签:

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

color = ['r', 'g', 'b']
train_df = pd.read_csv("unclean_text.csv", sep='\t')
label_text = pd.read_csv("labels.csv")
is_dup = train_df['category'].value_counts()

plt.figure(figsize=(8,4))
ax = sns.barplot(is_dup.index, is_dup.values, alpha=0.8, color=color[1])
ax.set_xlabel('Category')
ax.set_ylabel('Number of Occurrences')
ax.set_xticklabels(label_text['labels'], rotation='vertical', fontsize=10)
plt.show()

这假设 labels.csv 类似于:

labels
cat0
cat1
cat2
cat3
cat4
cat5
cat6
cat7
cat8

etc..

给你一个输出:

【讨论】:

这是一个答案,但不是正确答案。

以上是关于Seaborn:如何在条形图中用 X 轴中的文本替换索引?的主要内容,如果未能解决你的问题,请参考以下文章

更改刻度名称后,如何修复 seaborn 条形图中缺少的条形?

如何将 pandas 系列转换为 seaborn 条形图

如何在具有不同 Y 轴的同一个 seaborn 图中很好地制作条形图和线图?

如何在 Seaborn 图中设置色调顺序

如何在不同的 seaborn 图中匹配调色板?

如何按升序对条形图中的条形进行排序