2017-03-05 15 views
0

私はx軸に表示された各バーのラベルとしてキー名を持つタプルのリストから棒グラフを作成する必要があります。バー。私は現在使用しているコードです。ここタプルの一覧からの棒グラフの作成 - Python

top20 = [('Blues', 2008), ('Guadeloupe', 1894), ('Yorkshire', 1216), ('Monterrey', 1112), ('Government', 1081), ('Algeria', 972), ('Rotterdam', 920), ('Sardinia', 913), ('Mac OS', 864), ('Coffee', 858), ('Netherlands', 849), ('Oklahoma', 829), ('Tokyo', 817), ('Boating', 801), ('Finland', 765), ('Michigan', 737), ('Tamaulipas', 733), ('Croatia', 722), ('Kagoshima', 701), ('Isuzu', 678)] 

plt.bar(range(len(top20)), top20.values(), align='center') 
plt.xticks(range(len(top20)), list(top20.keys())) 
plt.show() 

私が知っている、ロジック入力として辞書に従いますが、私は、Aを考えることはできません。ここ は私の入力がどのように見えるかですこの仕事をする方法。助けてあげてあげてください。

答えて

0

あなたのタプルのリストは、リストに変換し、それを使用することができます。

plt.bar(range(len(top20)), [val[1] for val in top20], align='center') 
plt.xticks(range(len(top20)), [val[0] for val in top20]) 
plt.xticks(rotation=70) 
plt.show() 

出力:あなたはalign='center'を削除する場合である。

enter image description here

アップデート:

[OPはコメントで尋ねました]

各バーに値ラベルを追加してグラフmorを作成する方法e包括的な?

x_labels = [val[0] for val in top20] 
y_labels = [val[1] for val in top20] 
plt.figure(figsize=(12, 6)) 
ax = pd.Series(y_labels).plot(kind='bar') 
ax.set_xticklabels(x_labels) 

rects = ax.patches 

for rect, label in zip(rects, y_labels): 
    height = rect.get_height() 
    ax.text(rect.get_x() + rect.get_width()/2, height + 5, label, ha='center', va='bottom') 

出力:

enter image description here

また

dict(top20) 

出力:

{'Algeria': 972, 
'Blues': 2008, 
'Boating': 801, 
'Coffee': 858, 
'Croatia': 722, 
'Finland': 765, 
'Government': 1081, 
'Guadeloupe': 1894, 
'Isuzu': 678, 
'Kagoshima': 701, 
'Mac OS': 864, 
'Michigan': 737, 
'Monterrey': 1112, 
'Netherlands': 849, 
'Oklahoma': 829, 
'Rotterdam': 920, 
'Sardinia': 913, 
'Tamaulipas': 733, 
'Tokyo': 817, 
'Yorkshire': 1216} 

意志タプルリストを直接辞書に変換します。

+0

ありがとう、ヴィカシュ! –

+0

ようこそ@MaiiaSです。これがあなたの質問を解決した場合には、tick/upvoteを使ってください:) –

+0

グラフをより包括的にするために各バーに値ラベルを追加するにはどうすればいいですか? –

関連する問題