2016-08-25 49 views
2

我產生的條形圖用下面的代碼:設定順序

Temp_Counts = Counter(weatherDFConcat['TEMPBIN_CON']) 
df = pd.DataFrame.from_dict(Temp_Counts, orient = 'index') 
df.plot(kind = 'bar') 

它產生如下面的條形圖:

enter image description here

我想改變列出列的順序。我嘗試了一些看似不起作用的不同事物。我與工作看起來像這樣的數據幀:

enter image description here

我創造的合照數據幀的最後一列的barplot。任何方向或想法的創建一個barplot,可以讓我改變軸的順序的替代方法將不勝感激。因爲它很難解釋。

回答

2

weatherDFConcat['TEMPBIN_CON'].value_counts().sort_index().plot.bar() 

或者,如果你想用你的解決方案:

Temp_Counts = Counter(weatherDFConcat['TEMPBIN_CON']) 
df = pd.DataFrame.from_dict(Temp_Counts, orient = 'index').sort_index() 
df.plot(kind = 'bar') 

樣品:

import matplotlib.pyplot as plt 

weatherDFConcat = pd.DataFrame({'TEMPBIN_CON':['30 degrees or more', '-15 to -18 degrees', '-3 to 0 degrees', '15 to 18 degrees', '-15 to -18 degrees' 
]}) 
print (weatherDFConcat) 
      TEMPBIN_CON 
0 30 degrees or more 
1 -15 to -18 degrees 
2  -3 to 0 degrees 
3 15 to 18 degrees 
4 -15 to -18 degrees 

weatherDFConcat['TEMPBIN_CON'].value_counts().sort_index().plot.bar() 
plt.show() 
+0

如何doeas它的工作原理?或者你需要一些自定義的順序? – jezrael

+0

添加.sort_index()在我的數據上工作正常 - 謝謝! – Justin

1

我建議你將TEMPBIN_CON分爲兩部分:LOWER_TEMPHIGHER_TEMP。然後,您使用排序這些列中的數據框:

sorted = df.sort_values(by=['LOWER_TEMP', 'HIGHER_TEMP']) 

,然後你做你已經有了這樣的情節:我認爲你可以使用value_countssort_index和最後Series.plot.bar

sorted.plot(kind='bar')