Seabornのbarplot
関数は、カテゴリー別の数値データの集計値(点推定値)とその誤差範囲を棒グラフで表現するための強力なツールです。この記事では、barplot
関数のパラメーターとその使い方を詳しく解説します。
seaborn.barplot の概要
seaborn.barplot
は、数値変数の集計や統計推定値を矩形の高さで表し、その推定値の不確実性をエラーバーで示します。バーplotは、0を軸範囲に含み、変数にとって0が意味のある値となる場合に適しています。
主要パラメータ
data
: プロット用のデータセット。x
とy
が省略された場合、wide-formと解釈されます。それ以外の場合は、long-formが想定されます。x
,y
,hue
: data内の変数の名前、またはベクトルデータ。long-formデータの描画用の入力です。order
,hue_order
: カテゴリーレベルを描画する順序。指定がない場合は、データオブジェクトから推測されます。estimator
: 各カテゴリービン内で推定する統計関数。文字列またはベクトル->スカラーをマッピングするcallable。errorbar
: エラーバーの方法。"ci"
,"pi"
,"se"
,"sd"
の文字列、またはメソッド名とレベルパラメーターのタプル、またはベクトルから(min, max)区間へのマッピング関数、またはNone。n_boot
: 信頼区間を計算するために使用されるブートストラップサンプルの数。orient
: プロットの向き(縦または横)。通常、入力変数の種類に基づいて推測されますが、両方のx
とy
が数値またはwide-formデータを描画する場合に曖昧さを解消するために使用されます。
追加パラメータ
color
,palette
: プロットの要素の色または、hue変数の異なるレベルの色。saturation
: 塗りつぶし色を描画する際の元の彩度の割合。1
に設定すると、色が入力値と完全に一致します。fill
: Trueの場合、固定パッチを使用。そうでなければ、線画として描画されます。width
: orient軸上で各要素に割り当てられた幅。dodge
: hueマッピングが使用される場合に、要素が狭くなり、orient軸に沿ってシフトして重なり合わないようにするかどうか。capsize
: エラーバーの「キャップ」の幅。
Seabornのbaplotで作る棒グラフの例
このチュートリアルでは、Seabornを使用して様々なスタイルと設定でバーplotを作成する方法について説明します。具体的な例を通じて、Seabornのbarplot
機能の柔軟性と強力さを紹介します。
1. 基本的なバーplotの作成
カテゴリ変数によるグルーピングと集計値のプロット
import seaborn as sns
sns.set_theme()
# データセットの読み込み
penguins = sns.load_dataset("penguins")
# 基本的なバーplot
sns.barplot(data=penguins, x="island", y="body_mass_g")
このコードは、penguins
データセットの各島(island
)について、ペンギンの体重(body_mass_g
)の平均値をプロットします。
2. hueパラメータを使用してグループ化
グループ化変数をhue
に割り当てる
sns.barplot(data=penguins, x="body_mass_g", y="island", hue="island", legend=False)
ここでは、island
変数に基づいて色分けされたバーplotを作成し、それぞれの島を異なる色で表示しています。
3. wide-formデータフレームのプロット
wide-formデータの各列を集約してバーplotを作成
flights = sns.load_dataset("flights")
flights_wide = flights.pivot(index="year", columns="month", values="passengers")
# wide-formデータフレームのプロット
sns.barplot(data=flights_wide)
このコードでは、flights_wide
データフレームの各列をバーplotで表現しています。
4. シリーズのプロット
シリーズ(または辞書)をプロットする
# 特定の月のデータをプロット
sns.barplot(data=flights_wide["Jun"])
5. hueでの2層グループ化
sns.barplot(data=penguins, x="island", y="body_mass_g", hue="sex")
6. 標準偏差でエラーバー表示
sns.barplot(data=penguins, x="island", y="body_mass_g", errorbar="sd")
7. 異なる集約関数の使用とエラーバーの無効化
sns.barplot(data=flights, x="year", y="passengers", estimator="sum", errorbar=None)
8. バーの値にテキストラベルを追加
ax = sns.barplot(data=flights, x="year", y="passengers", estimator="sum", errorbar=None)
ax.bar_label(ax.containers[0], fontsize=10)
9. 元のスケーリングの保存と数値座標による注釈の追加
ax = sns.barplot(data=flights, x="year", y="passengers", native_scale=True, estimator="sum", errorbar=None)
ax.plot(1955, 3600, "*", markersize=10, color="r")
10. orient
を使用して、どの変数がグループ化されるべきかの曖昧さを解決
sns.barplot(data=flights, x="passengers", y="year", orient="y")
11. matplotlibのキーワード引数を使用してプロットの外観をカスタマイズ
sns.barplot(
data=penguins, x="body_mass_g", y="island",
errorbar=("pi", 50), capsize=.4,
err_kws={"color": ".5",
"linewidth": 2.5},
linewidth=2.5, edgecolor=".5", facecolor=(0, 0, 0, 0),
)
12. catplot()
を使用して面分割バーplotを描画
sns.catplot(
data=penguins, kind="bar",
x="sex", y="body_mass_g", col="species",
height=4, aspect=.5,
)
まとめ
seabornを用いてさまざまな散布図の作り方を見てきました。データの分析やプレゼンテーションに役立てていただけると幸いです。