2017-04-25 27 views
0

我試圖從然而數字正在於x軸,而不是從數據框列中的文本顯示的數據幀創建matplotlib一個簡單的柱狀圖蟒蛇條形圖顯示數字而不是文本

import numpy as np 
import pandas as pd 
import scipy.stats as stats 
import matplotlib.pyplot as plt 
EI_levels = ["very low","low","medium","high","very high"] 
#generate dataframe of values 
EI = pd.DataFrame({'level': np.random.choice(EI_levels,p = [0.05, 0.05, 0.2, 0.4, 0.3],size=500)}) 
#generate contingency table of counts 
EI_df = pd.DataFrame(EI.level.value_counts().reset_index()) 
EI_df.columns = ['level', 'count'] 
EI_df.set_index('level') 
#Generate bar chart 
ax = EI_df[['level', 'count']].plot(kind='bar', title ="Emotional Intelligence",figsize=(15, 10)) 
ax.xticks = (EI_df.level, ["very low","low","medium","high","very high"]) 
plt.show() 

回答

1

你需要撥打ax.set_xticklabels()將刻度標籤設置爲文本值。

ax = EI_df[['level', 'count']].plot(kind='bar', title ="Emotional Intelligence") 
ax.set_xticklabels(EI_df.level) 
plt.show() 
+0

如何獲得標籤以匹配實際計數值?當我運行你的代碼它只是將標籤添加到x軸,但不會將它們鏈接到值 – MattP

+0

@MattP - 我更新了我的答案。我誤解了你的代碼,並認爲你想要的標籤,因爲他們在列表中。現在代碼按照它們在「EI_df.level」列中的順序放置標籤。 – Craig

+0

真棒!奇蹟般有效。乾杯! – MattP