我有一个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)的列向量。怎么做?
答案 0 :(得分:3)
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..
给你一个输出: