2016-03-30 10 views
1

python 2.7では、辞書のサイズが変わることがあります。各キーについて、Q1、Q2、Q3 ....日付と整数を含むリストである辞書の値をプロットする必要があります。リストを値として持つ辞書のすべてのキーをプロットする(Python)

{'Q1': [['20.03.2016', 25], ['21.03.2016', 35], ['22.03.2016', 22], ['23.03.2016 
', 50], ['24.03.2016', 50], ['30.03.2016', 50], ['30.03.2016', 50]], 'Q3': [['20 
.03.2016', 23], ['21.03.2016', 21], ['22.03.2016', 27], ['23.03.2016', 20], ['24 
.03.2016', 20], ['30.03.2016', 20], ['30.03.2016', 20]], 'Q2': [['20.03.2016', 1 
5], ['21.03.2016', 12], ['22.03.2016', 15], ['23.03.2016', 15], ['24.03.2016', 1 
5], ['30.03.2016', 15], ['30.03.2016', 15]], 'Q5': [['20.03.2016', 320], ['21.03 
.2016', 30], ['22.03.2016', 30], ['23.03.2016', 30], ['24.03.2016', 30], ['30.03 
.2016', 30], ['30.03.2016', 30]], 'Q4': [['20.03.2016', 130], ['21.03.2016', 10] 
, ['22.03.2016', 10], ['23.03.2016', 10], ['24.03.2016', 10], ['30.03.2016', 10] 
, ['30.03.2016', 10]], 'Q7': [['23.03.2016', 5], ['24.03.2016', 5], ['30.03.2016 
', 5], ['30.03.2016', 5]], 'Q9': [['30.03.2016', 17]], 'Q8': [['24.03.2016', 15] 
, ['30.03.2016', 15], ['30.03.2016', 15]]} 

各キーの行を含む1つのプロットウィンドウにすべてのキーを描画し、キー名ごとにラベルを付けるにはどうすればよいですか?各行は色分けされ、各キーのすべての整数と日付データポイントが表示されます。だから、Q1ラインが最初colomn(日付)対第二colomn(整数)をプロットします

['20.03.2016', 25], 
['21.03.2016', 35], 
['22.03.2016', 22], 
['23.03.2016', 50], 
['24.03.2016', 50], 
['30.03.2016', 50], 
['30.03.2016', 50] 

各行は色分けすることができ、凡例にキーのラベルを持っている必要があります。私は、Pythonでnumpyとmatplotlibライブラリを使用しています。

+0

あなたの質問ビットを修正してくださいだろうか?私は思っていた、あなたは、各キーが色で表されている数字プロットで日付を作成する場合、それはあなたのために動作するのだろうか? – jtitusj

+0

プロットライブラリを使用していますか? Matplotlib? –

+0

@ジョン、はい、あなたはそれを正しくしました。各キーは色分けされている必要があります。したがって、各キーについて、それはリスト[1]対リスト[0](リスト内の2つのcolomns)プロットする必要があります – Sha

答えて

0

辞書項目を繰り返し処理してから、zip()を使用して値をアンパックすることができます。 label=キーワード引数をplot()に設定すると、legend()コールで自動的に凡例が作成されます。

for key, data_list in data_dict.items(): 
    dates_str, values = zip(*data_list) # Unpack 
    dates = convert_str_to_dates(dates_str) # Not handled in example 
    plt.plot(dates, values, label=key) 
plt.legend() 

解決するには、文字列のリストからmatplotlibが理解できる日付オブジェクトに移動する方法があります。しかし、これはドキュメントでかなり簡単に見つけることができます。

編集:リストの-リストを展開するzip()を使用してトリックは、それらの「!なるほど」の一つであった - 私のために瞬間:)

+0

ありがとう!それは最高です!文字列の日付を扱うために、dates = [dt.datetime.strptime(d、 '%d。%m。%Y')。 – Sha

関連する問題