SeabornのFacetGridでサブプロットのタイトル(注釈)をカスタマイズする方法
はじめに
データ分析では、カテゴリごとにデータを分割して可視化したい場面が多くあります。SeabornのFacetGridを使えば、条件付きの関係性を複数のサブプロット(ファセット)として一度に描画でき、さらにset_titles()メソッドで各サブプロットのタイトル(注釈)を自由にカスタマイズできます。
本記事では、FacetGridを使用してヒストグラムを描き、各グリッドのタイトルを設定する手順を、具体的なコード例とともにわかりやすく解説します。
実装の手順
- 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- col1(数値)とcol2(文字列)の2列を持つPandasのデータフレームを作成します。
- 条件付き関係をプロットするためのマルチプロットグリッド(FacetGrid)を生成します。
map()メソッドで、各ファセットのデータサブセットに対してプロット関数を適用します。set_titles()メソッドで、各グリッドのタイトルを設定します。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, 1], 'col2': ["three", "seven", "one", "zero"]})
g = sns.FacetGrid(data=df, col='col2', height=3.5)
g.map(plt.hist, 'col1', color='red', lw=0)
g.set_titles('{col_name}')
plt.show()
コードの解説
まず、plt.rcParamsで図のサイズを7.50×3.50インチに設定し、figure.autolayoutを有効にすることで、ラベルやタイトルが重ならないよう自動的にレイアウトを調整しています。
次に、数値列col1と文字列列col2を持つデータフレームを作成します。col2の値("three"、"seven"、"one"、"zero")が、それぞれ個別のファセット(サブプロット)として展開されます。
sns.FacetGrid(data=df, col='col2', height=3.5)では、col2の各カテゴリを列方向に並べたグリッドを生成し、各サブプロットの高さを3.5インチに指定しています。
g.map(plt.hist, 'col1', color='red', lw=0)により、各ファセットのデータに対して赤色のヒストグラムを描画します。lw=0は棒の枠線の太さを0にする指定です。
最後に、g.set_titles('{col_name}')で各サブプロットのタイトルを、対応するcol2のカテゴリ名に設定しています。ここが注釈(タイトル)のカスタマイズを行っている箇所です。
出力結果
上記のコードを実行すると、col2の4つのカテゴリ(three、seven、one、zero)に対応した4つのサブプロットが横一列に並び、それぞれに赤色のヒストグラムとカテゴリ名のタイトルが表示されます。
-
NumPyとMatplotlibで画像セグメンテーションをオーバーレイ表示する方法
NumPyとMatplotlibを組み合わせると、画像セグメンテーションの結果を元画像の上に重ねて(オーバーレイ)表示できます。マスク配列を活用すれば、検出した領域だけを色付きで半透明に強調することが可能です。 実装の手順 10×10のサイズを持つマスク配列を作成します。 一部の領域(中央部分)の値を1に更新します。 NumPyを使って画像データを生成します。 条件を満たす要素をマスクし、マスク済みデータを作成します。 figure()メソッドで新しい図を作成、または既存の図をアクティブ化します。 imshow()メソッドでデータを2次元ラスタ画像として表示します。 show()メソッドで図
-
Seabornで2つのグラフを横に並べてプロットする方法(Matplotlib)
データ分析では、複数のグラフを1つの図の中に並べて比較できると非常に便利です。この記事では、SeabornとMatplotlibを組み合わせて、2つのグラフを横並び(1行2列)で表示する方法を解説します。 実装の流れ 2つのグラフを並べて描画するには、以下の手順を実行します。 plt.subplots(1, 2) を使い、figureサイズ(7, 7)で1行2列のサブプロットを作成します。 Pandasを使って、col1 と col2 のキーを持つデータフレームを作成します。 countplot() メソッドを使用し、カテゴリごとの観測値の件数を棒グラフで可視化します。 subplots_a