図内のすべてのサブプロットにわたって凡例をストレッチするには、凡例プレースメントを半自動化することができます。図からのsubplotpars
を使用すると、使用された間隔を見つけることができ、その間隔がbbox_to_anchor
引数で直接使用できるようになります。これには、bbox_transform
引数を使用して凡例変換を図形変換に設定する必要があります。手動で指定する必要がある唯一のパラメータは、軸と凡例の間隔(下の例では0.02)と凡例の高さ(例では0.05以下)です(両方とも図形の高さ単位)。
s = fig.subplotpars
bb=[s.left, s.top+0.02, s.right-s.left, 0.05 ]
leg = axes[0].legend(..., bbox_to_anchor=bb, mode="expand", borderaxespad=0,
bbox_transform=fig.transFigure)
完全な例は:
import matplotlib.pyplot as plt
import numpy as np
a = np.cumsum(np.random.rand(10,8), axis=0)
fig, axes = plt.subplots(ncols=2)
for i in range(a.shape[1]):
axes[i//4].plot(a[:,i], marker="s", label="Label {}".format(i))
s = fig.subplotpars
bb=[s.left, s.top+0.02, s.right-s.left, 0.05 ]
leg = axes[0].legend(loc=8, bbox_to_anchor=bb, ncol= 4, mode="expand", borderaxespad=0,
bbox_transform=fig.transFigure, fancybox=False, edgecolor="k")
leg.get_frame().set_linewidth(72./fig.dpi)
plt.show()
![enter image description here](https://i.stack.imgur.com/PiTRo.png)
あなたが科学論文に1つのまたは2の伝説を必要とするかどうかのように、これは紙のスタイルに完全にdependendです。私は、ここのような単一の伝説を使っても大丈夫だと思います。しかし、ジャーナルでは、ほとんどの場合、サブプロットにa
とb
または(a)
と(b)
のような小文字を付ける必要があります。
これはmatplolibの質問ですか? –
はいそうです。このフォーラムに合っていませんか? – Tassou
それは適しています。それは、matplotlibタグでもっと答えを受け取るかもしれません。私はそれを追加します。 –