MatplotlibとSeabornのFacetGridプロットに凡例を追加する方法
SeabornのFacetGridを使って条件付き関係を可視化する際、各サブプロットに凡例(レジェンド)を追加すると、グラフの読みやすさが大きく向上します。ここでは、Matplotlibと組み合わせてFacetGridに凡例を追加する手順を解説します。
手順
- 図のサイズを設定し、
figure.autolayoutを有効にしてサブプロット間・周囲の余白を自動調整します。 - col1列を持つデータフレーム(DataFrame)を作成します。
- 条件付き関係をプロットするためのマルチプロットグリッドとしてFacetGridを作成します。
col引数で列方向の分割、hue引数で色分けの基準となる変数を指定します。 - map_dataframe()メソッドを使用します。このメソッドは、長形式(long-form)のDataFrameを
'data'キーワード引数として受け取り、文字列の変数名でデータにアクセスできる描画関数との組み合わせに適しています。 - add_legend()メソッドを呼び出して、プロットに凡例を追加します。
- plt.show()メソッドを実行して、図を表示します。
コード例
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
df = pd.DataFrame({'col1': [3, 7, 8]})
g = sns.FacetGrid(df, col="col1", hue="col1")
g.map_dataframe(sns.scatterplot)
g.set_axis_labels("X", "Y")
g.add_legend()
plt.show()
実行結果

このように、hueで色分けを指定した上でadd_legend()を呼び出すだけで、FacetGrid全体に対して凡例が自動的に配置されます。凡例の位置やタイトルを細かく調整したい場合は、add_legend(title=..., adjust_subplots=True)のように引数を渡すことも可能です。
-
Python Matplotlibで3Dグラフをプロットする方法を解説
PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使
-
MatplotlibでSeabornプロットの凡例(レジェンド)のフォントサイズを大きくする方法
Seabornプロットの凡例(レジェンド)のフォントサイズを大きくしたい場合は、fontsize変数を定義し、それをlegend()メソッドの引数として渡すことで実現できます。手順Pandasを使ってデータフレームを作成します。キーは「number」「count」「select」とします。Seabornのbarplot()メソッドを使って棒グラフを描画します。凡例のフォントサイズを大きくするための変数fontsizeを初期化します。legend()メソッドを使い、fontsizeを引数に指定して図上に凡例を配置します。図を表示するには、show()メソッドを使用します。サンプルコードimpor