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

Sal*_* A. 4 python seaborn

我有一个数据集,其中的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()
Run Code Online (Sandbox Code Playgroud)

它可以正确绘制每个类的频率的小节图。

在此处输入图片说明

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

Mar*_*ans 6

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()
Run Code Online (Sandbox Code Playgroud)

这假设labels.csv是这样的:

labels
cat0
cat1
cat2
cat3
cat4
cat5
cat6
cat7
cat8

etc..
Run Code Online (Sandbox Code Playgroud)

给你一个输出:

带x轴标签的图形图

  • 这是一个答案,但它不是正确的答案。 (2认同)