次のプログラムは正常に実行されますが、凡例は 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
、アーティスト* が反復処理され、ラベル付きのアーティストの凡例エントリが生成されます。
[*] 取り上げるアーティストには例外がある