forループ内の複数の凡例 質問する

forループ内の複数の凡例 質問する

次のプログラムは正常に実行されますが、凡例は 1 つしか表示されません。 4 つの凡例をすべて表示するにはどうすればよいですか? 添付の画像を参照してください。

import matplotlib.pyplot as plt
dct = {'list_1' : [1,2,4,3,1],'list_2' : [2,4,5,1,2],'list_3' : [1,1,3,4,6],'list_4' : [1,1,2,2,1]}

xs = [0,1,2,3,4]


for i in [1,2,3,4]:
    plt.plot(xs,dct['list_%s' %i])
    plt.legend(['%s data' %i])

plt.show()

ここに画像の説明を入力してください

ベストアンサー1

import matplotlib.pyplot as plt
dct = {'list_1' : [1,2,4,3,1],'list_2' : [2,4,5,1,2],'list_3' : [1,1,3,4,6],'list_4' : [1,1,2,2,1]}

xs = [0,1,2,3,4]


for i in [1,2,3,4]:
    plt.plot(xs,dct['list_%s' %i], label='%s data' % i)

plt.legend()

plt.show()

が機能する方法に遭遇していますlegend。呼び出されるたびに、現在の凡例が破棄され、新しい凡例に置き換えられます。legend文字列のリストのみを指定すると、ラベルがなくなるまで、 内のアーティスト (描画されるデータを表すオブジェクト) が反復処理されますaxes(そのため、最初の曲線は 4 番目としてラベル付けされます)。コマンドkwarg labelに を含めてplot、引数なしで呼び出すとlegend、アーティスト* が反復処理され、ラベル付きのアーティストの凡例エントリが生成されます。

[*] 取り上げるアーティストには例外がある

おすすめ記事