[matplotlib] 122. 凡例の順序を逆にして表示

python

はじめに

データ可視化において凡例(legend)の表示順序は、読み手の理解しやすさに大きく影響します。この記事では、matplotlib を使って凡例の順序を逆にする方法を詳しく解説します。

本記事で学べること

  • legend() 関数の reverse パラメータを使った簡単な方法
  • ハンドルとラベルを手動でソートする高度なテクニック
  • 実際のケースに基づいた実践的なコード例
  • 凡例の位置や色、スタイルのカスタマイズ方法

コード&解説

モジュールのインポートなど

バージョン

データの生成

np.random.random(len(x))でランダムデータを作成します。

ax.legend()で凡例を表示

ax.legend()で凡例を表示すると以下のようになります。

プロット上では線がC、B、Aの順に表示されているのに対し、凡例では上からA、B、Cと表示されています。データ自体を変更できない場合、凡例の順序を逆にして表示したくなるのは自然なことです。

凡例を逆順にして表示

axオブジェクトにプロットしたグラフから、ax.get_legend_handles_labels()メソッドで凡例情報を取得できます。handlesにはプロットの形状が、labelsにはラベル情報が格納されます。

凡例を逆順に表示するには、ax.legend(handles=handles[::-1], labels=labels[::-1])のように、handlesとlabelsの両方を[::-1]で逆順に指定します。

2つ並べて表示

横に並べて表示すると以下のようになります。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

matplotlibの凡例(legend)レイアウト関連メモ - Qiita
凡例の表示、曲線の選択 ax.legend()にオプションを何も含めない場合。 import matplotlib.pyplot as plt import numpy as np x = np.linspace(-3, 3, 101) y...

コメント