2017-08-17 87 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