1. ホーム
  2. matplotlib

[解決済み] Matplotlib - サブプロット脇のグローバルな凡例とタイトル

2022-05-10 03:37:23

質問

matplotを始めて、いくつかの基本的なプロットを管理しましたが、今、私が必要とするいくつかのことを行う方法を発見するのは難しいと思います :(

私の実際の質問は、サブプロットを持つ図にグローバルタイトルとグローバル凡例を配置する方法です。

私は、さまざまな色で多くの異なるグラフがある2x3のサブプロットをしています(約200)。それらの(ほとんど)区別するために、私は次のようなものを書きました。

def style(i, total):
    return dict(color=jet(i/total),
                linestyle=["-", "--", "-.", ":"][i%4],
                marker=["+", "*", "1", "2", "3", "4", "s"][i%7])

fig=plt.figure()
p0=fig.add_subplot(321)
for i, y in enumerate(data):
    p0.plot(x, trans0(y), "-", label=i, **style(i, total))
# and more subplots with other transN functions

(これについて何か意見は? :) 各サブプロットは、同じスタイル関数を持ちます。

今、私はすべてのサブプロット用のグローバルなタイトルと、すべてのスタイルを説明するグローバルな凡例を取得しようとしています。また、200 のスタイルすべてに適合するように、フォントを小さくする必要があります (完全にユニークなスタイルは必要ありませんが、少なくともいくつかの試みは必要です)。

誰かがこのタスクを解決するのを助けることができますか?

どのように解決するのですか?

グローバルタイトル : matplotlib の新しいリリースでは、グローバルタイトルとして 図.suptitle() のメソッド Figure :

import matplotlib.pyplot as plt
fig = plt.gcf()
fig.suptitle("Title centered above all subplots", fontsize=14)

あるいは、( スティーブン C. ハウエル のコメント (ありがとうございます!) を参考にして) matplotlib.pyplot.suptitle() 関数を使用します。

 import matplotlib.pyplot as plt
 # plot stuff
 # ...
 plt.suptitle("Title centered above all subplots", fontsize=14)