2017-08-17 84 views
0

我有category列具有代表等级标识,即0,1,2整数.....Seaborn:如何用barplot中的X轴文本替换索引?

我有单独的文件,其中包含文本标签该类别即对指数0,它包含classA的数据集等等。我想用下面的代码使用seaborn绘制一张barplot。

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() 

它正确地绘制了每个班级频率的barplot。

enter image description here

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

回答

2

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.. 

给你的输出:

graph plot with labels for x axis

+0

谢谢!正是我需要的。 –

+0

这是一个答案,但它不是正确的答案。 – mwaskom