スポンサーリンク

matplotlibでlabelが表示されない時には、plt.legend()を呼んでいるかを確認

よくありがちなのでここに残したいと思います。
matplotlibでlabelが表示されない時には、まずは、plt.legend()を呼んでいるかを確認すると良いかと思います。

plt.plot(x, y, label='value1')のようにlabelを設定しても、plt.legend()を呼ばないと表示されません。

下記がサンプルコードになります。
参考:リストをvalueにした辞書型データをmatplotlibでグラフ化する

$ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import matplotlib.pyplot as plt

dic = {'x_val' : [3, 4, 5, 6, 7], 'y_val1' : [33, 42, 35, 76, 17], 'y_val2' : [23, 32, 15, 6, 7]}

plt.figure()
x = dic['x_val']
y = dic['y_val1']
plt.plot(x, y, label='value1')

y = dic['y_val2']
plt.plot(x, y, label='value2')
plt.legend()

plt.title('sample1')
plt.xlabel('month')
plt.ylabel('value')
plt.show()

下記が実行結果になります。

matplotlibでlabelを表示

スポンサーリンク

画面分割する場合は、画面毎にplt.legend()を呼んでいるかを確認

画面分割する場合は、画面毎にplt.legend()を呼ぶ必要があります。

参考:Pythonのpandasで画面分割して複数のグラフを表示

下記がサンプルコードになります。

$ cat sample2.py 
#!/usr/bin/env python3
# coding: UTF-8

import matplotlib.pyplot as plt

dic = {'x_val' : [3, 4, 5, 6, 7], 'y_val1' : [33, 42, 35, 76, 17], 'y_val2' : [23, 32, 15, 6, 7]}

#3行 × 1列のグラフを設定
row = 2
col  = 1

#1番目のグラフのプロット
plt.subplot(row, col, 1)
x = dic['x_val']
y = dic['y_val1']
plt.plot(x, y, label='value1')
plt.legend()
 
#2番目のグラフのプロット
plt.subplot(row, col, 2)
y = dic['y_val2']
plt.plot(x, y, label='value2')
plt.legend()
 
#グラフを表示
plt.show()

下記が実行結果になります。
matplotlibで画面分割してlabelを表示

スポンサーリンク