やりたいこと
matplotlibのsubplotでグラフを複数表示した際に、
凡例が何個も表示されてしまい、複数のグラフの下に1つだけ表示させたい。
読み込みたいcsvファイルの中身は以下の通りです。
|x|a|b|c|d|e|f|
|:--|:--:|--:|
|1|1|5| 9|13| 17|21|
|2|2|6| 10|14| 18|22|
|3|3|7| 11|15| 19|23|
|4|4|8| 12|16| 20|24|
import matplotlib.pyplot as plt import pandas as pd pd1 = pd.read_csv("1.csv") pd2 = pd.read_csv("2.csv") pd3 = pd.read_csv("3.csv") plt.figure(figsize=(10,10)) x = pd1.iloc[:, 0] for i in range(1, 7): y1 = pd1.iloc[:, i] y2 = pd2.iloc[:, i] y3 = pd3.iloc[:, i] plt.subplot(2, 3, i) plt.plot(x, y1, label = "legend1", color = "b") plt.plot(x, y2, label = "legend2", color = "r") plt.plot(x, y3, label = "legend3", color = "g") plt.tight_layout() plt.legend(loc = "lower center", bbox_to_anchor=(0.5, -0.3))
これを実行すると、以下のグラフが出力されますが、凡例がグラフごとに出力されてしまいます。
これを上の3列で1つ、下の3列で1つすつ、凡例が表示されるようにしたいです。
Axes.get_legend_handles_labels() で、各AxesのHandleとLabelを取得して、
マージした後に Axes.legend(handles, labels)にて1つのAxesにて表示すればいいのは
わかるのですが、どうプログラムに組み込むかがわかりません。
どなたかわかる方がいましたら、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー