2017-11-04 12 views
0

私はスプレッドシートからデータを取り込み、すべてグラフ化しようとしていますが、データをグラフに入れるたびにグラフがアルファベット順になります。 enter image description herePython matplotlib - グラフをアルファベット順に並べ替える

しかし、私はそれに供給リストは次のようになります。ここでは

['Apr 2016', 'May 2016', 'Jun 2016', 'Jul 2016', 'Aug 2016', 'Sep 2016', 
'Oct 2016', 'Nov 2016', 'Dec 2016', 'Jan 2017', 'Feb 2017', 'Mar 2017', 
'Apr 2017', 'May 2017', 'Jun 2017', 'Jul 2017', 'Aug 2017', 'Sep 2017', 
'Oct 2017'] 

は私のコードです:

import pandas as pd 
import matplotlib.pyplot as plt 

sheet = pd.ExcelFile("path to spreadsheet").parse() 


def graph_column(category_name, exel_sheet): 

    plt.xlabel("Month") 
    plt.ylabel("Dollars") 
    plt.title(category_name) 

    month_list = [] 
    row_list = [] 

    for row in range(len(exel_sheet["Monthly Sales"])): 
     month = exel_sheet["Monthly Sales"][row] 
     month_list.append(month) 
     row = float(exel_sheet[category_name][row]) 
     row_list.append(row) 

    print(month_list) 
    plt.barh(month_list, row_list) 
    plt.show() 


graph_column("Grocery", sheet) 

は、どのように私はそれがとてもグラフありえないが、アルファベット順にソートすることができますか?

答えて

0

バープロットは、日付がカテゴリであると考えています。もちろん、1つのオプションを実際の日付(datetimeオブジェクト)に変換することも可能ですが、この場合、潜在的に簡単な解決策は、バーを整数値でプロットし、それに応じてラベルを設定することです。

plt.barh(range(len(row_list)), row_list) 
plt.yticks(range(len(row_list)), month_list) 

plt.gca().invert_yaxis()でyスケールを逆にすると意味があります。

関連する問題