カスタム凡例の作成#

カスタム凡例を少しずつ作成します。

ノート

凡例の作成とカスタマイズの詳細については、次のページを参照してください。

プロットしたデータに明示的に関連付けられた凡例が必要ない場合があります。たとえば、10 本の線をプロットしたが、それぞれの凡例項目を表示したくないとします。単純に線をプロットして を呼び出すとax.legend()、次の結果が得られます。

import matplotlib as mpl
from matplotlib import cycler
import matplotlib.pyplot as plt
import numpy as np

# Fixing random state for reproducibility
np.random.seed(19680801)

N = 10
data = (np.geomspace(1, 10, 100) + np.random.randn(N, 100)).T
cmap = plt.cm.coolwarm
mpl.rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N)))

fig, ax = plt.subplots()
lines = ax.plot(data)
ax.legend()
カスタム凡例
No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.

<matplotlib.legend.Legend object at 0x7f2cf9d80c40>

凡例エントリは作成されていないことに注意してください。この場合、プロットされたデータに明示的に関連付けられていない Matplotlib オブジェクトを使用して凡例を作成できます。例えば:

from matplotlib.lines import Line2D
custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4),
                Line2D([0], [0], color=cmap(.5), lw=4),
                Line2D([0], [0], color=cmap(1.), lw=4)]

fig, ax = plt.subplots()
lines = ax.plot(data)
ax.legend(custom_lines, ['Cold', 'Medium', 'Hot'])
カスタム凡例
<matplotlib.legend.Legend object at 0x7f2cfaadfac0>

この方法で使用できる Matplotlib オブジェクトは他にも多数あります。以下のコードでは、いくつかの一般的なものをリストしています。

from matplotlib.patches import Patch
from matplotlib.lines import Line2D

legend_elements = [Line2D([0], [0], color='b', lw=4, label='Line'),
                   Line2D([0], [0], marker='o', color='w', label='Scatter',
                          markerfacecolor='g', markersize=15),
                   Patch(facecolor='orange', edgecolor='r',
                         label='Color Patch')]

# Create the figure
fig, ax = plt.subplots()
ax.legend(handles=legend_elements, loc='center')

plt.show()
カスタム凡例

スクリプトの合計実行時間: ( 0 分 1.610 秒)

Sphinx-Gallery によって生成されたギャラリー