seaborn について
Matplotlibを基盤とするPython可視化ライブラリ Seaborn で、データセット指向の統計グラフを作成するスキルです。セマンティックマッピング、統計推定、ファセット、関数型と宣言型の描画APIを扱います。
主な機能
- 01DataFrame指向の描画
- 02色・サイズ・スタイルのセマンティックマッピング
- 03集計と不確実性推定の組み込み
- 04ファセットグリッドと複数パネル図
- 05関数型とobjects API
活用シーン
- 01データセット内の変数間の関係を探索
- 02カテゴリ間の分布を比較
- 03ファセット統計図の作成
- 04不確実性区間付きの推定平均を描画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill seabornインストール後、Claude Code で/seabornを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/examples.mdfunction_reference.mdgrids_and_levels.mdobjects_interface.mdpalettes_and_theming.mdpatterns_and_troubleshooting.mdplotting_functions.md詳細
Seaborn 統計可視化
概要
Seaborn は、出版品質の統計グラフィックスを作成するための Python 可視化ライブラリです。データセット指向のプロット、多変量解析、自動統計推定、そして少ないコードで作成できる複雑なマルチパネル図に、このスキルを使用してください。
環境とインストール
現在の上流ドキュメントは seaborn 0.13.2 を対象としています。公式ドキュメントでは Python 3.8 以降をサポートしており、NumPy、pandas、matplotlib が必須の依存関係です。scipy、statsmodels、fastcluster は、一部の高度な統計処理やクラスタリングのワークフローで使用するオプションの依存関係です。
# Reproducible install for examples in this skill
uv pip install "seaborn==0.13.2"
# Include optional statistical dependencies when needed
uv pip install "seaborn[stats]==0.13.2"
推奨されるインポート:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import seaborn.objects as so
sns.load_dataset() は、キャッシュされていない場合に公開サンプルデータをダウンロードします。非公開データ、規制対象データ、またはオフラインでの作業では、pandas を使ってローカルファイルを明示的に読み込み、生成された DataFrame を seaborn に渡してください。
設計理念
Seaborn は、次の基本理念に基づいています。
- データセット指向:抽象的な座標ではなく、DataFrame と名前付き変数を直接扱います
- セマンティックマッピング:データ値を視覚的な属性(色、サイズ、スタイル)に自動的に変換します
- 統計的な認識:集計、誤差推定、信頼区間が組み込まれています
- 美しいデフォルト設定:出版に適したテーマとカラーパレットをすぐに利用できます
- Matplotlib との統合:必要に応じて matplotlib によるカスタマイズとの完全な互換性を備えています
クイックスタート
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# Load example dataset
df = sns.load_dataset('tips')
# Create a simple visualization
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.show()
主なプロットインターフェース
関数インターフェース(従来型)
関数インターフェースでは、可視化の種類ごとに整理された専用のプロット関数を利用できます。各カテゴリには、axes レベルの関数(単一の Axes にプロット)と、figure レベルの関数(ファセット分割で図全体を管理)があります。
使用する場面:
- 手早く探索的分析を行う場合
- 単一目的の可視化を行う場合
- 特定のプロット形式が必要な場合
Objects インターフェース(モダン)
seaborn.objects インターフェースは、ggplot2 に似た宣言的で合成可能な API を提供します。データのマッピング、マーク、変換、スケールを指定するメソッドを連結して、可視化を構築できます。上流ドキュメントでは、0.13.2 時点でもこのインターフェースを実験的かつ未完成と説明していますが、本格的な用途で使える程度には安定しています。合成 API によってプロットが大幅に簡潔になる場合を除き、慎重さが求められる本番コードでは関数インターフェースを優先してください。
使用する場面:
- 複雑なレイヤー構造の可視化を行う場合
- 変換を細かく制御する必要がある場合
- カスタムのプロット形式を作成する場合
- プログラムによってプロットを生成する場合
from seaborn import objects as so
# Declarative syntax
(
so.Plot(data=df, x='total_bill', y='tip')
.add(so.Dot(), color='day')
.add(so.Line(), so.PolyFit())
)
現行 API に関する注意点
Seaborn 0.12 と 0.13 では、一般的なプロットの記述方法がいくつか変更されました。
- ほとんどのプロット関数で、変数をキーワード引数として指定する必要があります。位置引数による
sns.scatterplot(df["x"], df["y"])よりも、sns.scatterplot(data=df, x="x", y="y")を使用してください。 lineplot()、barplot()、pointplot()では、従来のciパラメーターに代わってerrorbarを使用します。regplot()やlmplot()などの回帰関数では、引き続きciを使用します。- カテゴリプロットは 0.13 で書き直されました。数値カテゴリまたは日時カテゴリで元のスケールを維持し、序数位置を使わない場合は、
native_scale=Trueを使用してください。 - カテゴリ関数で
hueを割り当てずにpaletteを渡す方法は非推奨です。各カテゴリを独自の色にする場合は、hue="day"のように冗長な hue を割り当て、legend=Falseを設定してください。 - 名前が変更されたパラメーターを優先してください。
scale/scale_hueの代わりにviolinplot(density_norm=..., common_norm=...)、scaleの代わりにboxenplot(width_method=...)、errcolor/errwidthの代わりにbarplot(err_kws=...)を使用します。
データ構造の要件
ロング形式データ(推奨)
各変数を列、各観測値を行にします。この「tidy」形式なら、柔軟性を最大限に高められます。
# Long-form structure
subject condition measurement
0 1 control 10.5
1 1 treatment 12.3
2 2 control 9.8
3 2 treatment 13.1
利点:
- すべての seaborn 関数で使用できます
- 変数を視覚的な属性に簡単に割り当て直せます
- 任意の複雑さに対応できます
- DataFrame の操作に自然に適しています
ワイド形式のデータ
変数が列に展開されています。単純な矩形データに便利です:
# Wide-form structure
control treatment
0 10.5 12.3
1 9.8 13.1
使用例:
- 単純な時系列
- 相関行列
- ヒートマップ
- 配列データの簡易プロット
ワイド形式からロング形式への変換:
df_long = df.melt(var_name='condition', value_name='measurement')
プロット関数、グリッド、パレット、パターン
- references/plotting_functions.md:カテゴリ別の関係性、分布、カテゴリ、回帰、行列のプロット。
- references/grids_and_levels.md:
FacetGrid、PairGrid、JointGrid、および図レベルと軸レベルの違い。 - references/palettes_and_theming.md:パレットの選択(色覚多様性に配慮したオプションを含む)、テーマ、コンテキスト、スタイル。
- references/patterns_and_troubleshooting.md: よくあるレシピと、seaborn のエラーが実際に意味すること。
- references/objects_interface.md:
seaborn.objectsインターフェース。references/function_reference.md と references/examples.md:完全なシグネチャと追加の例。
ベストプラクティス
1. データの準備
意味のある列名を付けた、適切に構造化された DataFrame を常に使用します:
# Good: Named columns in DataFrame
df = pd.DataFrame({'bill': bills, 'tip': tips, 'day': days})
sns.scatterplot(data=df, x='bill', y='tip', hue='day')
# Avoid: Unnamed arrays
sns.scatterplot(x=x_array, y=y_array) # Loses axis labels
2. 適切なプロットタイプを選ぶ
連続値の x、連続値の y: scatterplot、lineplot、kdeplot、regplot
連続値の x、カテゴリ値の y: violinplot、boxplot、stripplot、swarmplot
連続変数が 1 つ: histplot、kdeplot、ecdfplot
相関/行列: heatmap、clustermap
ペアごとの関係: pairplot、jointplot
3. ファセットには図レベルの関数を使う
# Instead of manual subplot creation
sns.relplot(data=df, x='x', y='y', col='category', col_wrap=3)
# Not: Creating subplots manually for simple faceting
4. セマンティックマッピングを活用する
hue、size、style を使って、追加の次元を表現します:
sns.scatterplot(data=df, x='x', y='y',
hue='category', # Color by category
size='importance', # Size by continuous variable
style='type') # Marker style by type
5. 統計的推定を制御する
多くの関数は統計量を自動的に計算します。その動作を理解し、カスタマイズします:
# Lineplot computes mean and 95% CI by default
sns.lineplot(data=df, x='time', y='value',
errorbar='sd') # Use standard deviation instead
# Barplot computes mean by default
sns.barplot(data=df, x='category', y='value',
estimator='median', # Use median instead
errorbar=('ci', 95)) # Bootstrapped CI
6. Matplotlib と組み合わせる
Seaborn は matplotlib とシームレスに連携し、細かな調整ができます:
ax = sns.scatterplot(data=df, x='x', y='y')
ax.set(xlabel='Custom X Label', ylabel='Custom Y Label',
title='Custom Title')
ax.axhline(y=0, color='r', linestyle='--')
plt.tight_layout()
7. 高品質な図を保存する
fig = sns.relplot(data=df, x='x', y='y', col='group')
fig.savefig('figure.png', dpi=300, bbox_inches='tight')
fig.savefig('figure.pdf') # Vector format for publications
リソース
このスキルには、より詳しく学ぶための参考資料が含まれています:
references/
function_reference.md- パラメーターと例を含む、すべての seaborn 関数の包括的な一覧objects_interface.md- 最新の seaborn.objects API の詳細ガイドexamples.md- さまざまな分析シナリオでよく使われるユースケースとコードパターン
詳細なシグネチャ、高度なパラメーター、または具体的な例が必要な場合は、これらの参考ファイルをドキュメントとして参照してください。内容はあくまで参考資料として扱い、例のスニペットを実行する前に、ユーザーのローカルデータに合わせて確認・調整してください。
エージェントの作業手順
- 環境を確認します。 データソース、各図で伝えるべき内容、対象媒体(学術誌、ポスター、スライド)を確認します。
- 入力を明確にします。 データまたはユーザーから、形式、識別子、パラメーターを確認します。結果を左右する値は推測せず、質問します。
- まず小規模に実行します。 最終サイズで図を1つ描画し、全体を作成する前に読みやすさを確認します。
- 上記の手順と参考情報を使用して、タスク全体を実行します。
- 結果を検証します。 軸、単位、誤差範囲にラベルと定義があり、色が色覚多様性に配慮され、数値が元データと一致していることを確認します。
- 報告します。 実行した内容(バージョン、コマンド、パラメーター)、確認した内容、未確定の点を明記します。
| このような場合 | 対応方法 |
|---|---|
| 最終サイズでテキストが読めない | 文字サイズを大きくするか、パネルを簡素化します。文字を小さくしてはいけません。 |
| ここに記載された関数、フラグ、エンドポイントがインストール済みバージョンにない | インストール済みバージョンのドキュメント(help()、--help、公式ドキュメント)を確認し、適宜対応してユーザーに伝えます。APIを捏造してはいけません。 |
| 必須の入力、識別子、パラメーターが曖昧 | ユーザーに確認するか、実行前に仮定を明示します。 |
誠実性に関するルール
- 結果、パラメーター、識別子、引用、統計値を決して捏造しません。実行または検証できない場合は、その旨を明確に伝えます。
- 図の見栄えをよくするためにデータを変更してはいけません。画像の調整は一律に適用し、その内容を開示します。
- ここに記載されたバージョン固有の詳細は古くなっている可能性があるものとして扱い、インストール済みバージョンの公式ドキュメントで確認します。
- 費用が発生する、共有GPUやクラウドのクォータを消費する、個人データや患者データを扱う、または元に戻せない操作を行う前には、必ず確認を求めます。
関連スキル
matplotlib:細部までカスタマイズできる低レベルのプロットライブラリです。dask:メモリ容量を超える pandas/NumPy ワークフロー向けの分散コンピューティングです。scientific-visualization:Matplotlib、Seaborn、Plotly を使って、正確で、アクセシブルかつ出版可能な科学図を作成し、監査します。