seaborn
統計的データの可視化に特化したスキルで、散布図・箱ひげ図・バイオリン図・ヒートマップ・ペアプロット・回帰図・相関行列・KDE・ファセットプロットなどを生成します。探索的データ分析から論文掲載用の図作成まで幅広く対応します。
description の原文を見る
Statistical visualization. Scatter, box, violin, heatmaps, pair plots, regression, correlation matrices, KDE, faceted plots, for exploratory analysis and publication figures.
SKILL.md 本文
Seaborn 統計的可視化
概要
Seaborn は Python の可視化ライブラリで、出版品質の統計グラフィックスを作成できます。このスキルを使用して、データセット指向のプロット、多変量分析、自動統計推定、複雑なマルチパネル図を最小限のコードで実現します。
設計思想
Seaborn は以下の基本原則に従っています:
- データセット指向: 抽象座標ではなく DataFrame と命名変数を直接操作
- セマンティックマッピング: データ値を視覚的属性 (色、サイズ、スタイル) に自動変換
- 統計認識: 組み込みの集計、エラー推定、信頼区間
- 美的デフォルト: そのまま使用可能な出版品質のテーマとカラーパレット
- Matplotlib 統合: 必要に応じて Matplotlib カスタマイズとの完全互換性
クイックスタート
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# サンプルデータセットの読み込み
df = sns.load_dataset('tips')
# シンプルな可視化を作成
sns.scatterplot(data=df, x='total_bill', y='tip', hue='day')
plt.show()
コアプロッティングインターフェース
関数インターフェース (従来型)
関数インターフェースは、可視化タイプ別に整理された特化したプロット関数を提供します。各カテゴリには Axes レベル関数 (単一 Axes にプロット) と Figure レベル関数 (ファセット機能を含むプロット全体を管理) があります。
使用場面:
- クイックな探索的分析
- 単一目的の可視化
- 特定のプロットタイプが必要な場合
Objects インターフェース (モダン)
seaborn.objects インターフェースは、ggplot2 に似た宣言的で組み合わせ可能な API を提供します。データマッピング、マーク、変換、スケールを指定するメソッドをチェーンして可視化を構築します。
使用場面:
- 複雑なレイヤーを持つ可視化
- 変換の細かい制御が必要な場合
- カスタムプロットタイプの構築
- プログラマティックなプロット生成
from seaborn import objects as so
# 宣言的な構文
(
so.Plot(data=df, x='total_bill', y='tip')
.add(so.Dot(), color='day')
.add(so.Line(), so.PolyFit())
)
カテゴリ別プロッティング関数
リレーショナルプロット (変数間の関係)
用途: 2 つ以上の変数がどのように関連するかを探索
scatterplot()- 個々の観測値をポイントとして表示lineplot()- トレンドと変化を表示 (自動的に集計して CI を計算)relplot()- 自動ファセット機能を備えた Figure レベルインターフェース
主要パラメータ:
x,y- 主要な変数hue- 追加のカテゴリ/連続変数の色エンコーディングsize- ポイント/線のサイズエンコーディングstyle- マーカー/線スタイルエンコーディングcol,row- 複数のサブプロットにファセット (Figure レベルのみ)
# 複数のセマンティックマッピングを持つ散布図
sns.scatterplot(data=df, x='total_bill', y='tip',
hue='time', size='size', style='sex')
# 信頼区間付きの線プロット
sns.lineplot(data=timeseries, x='date', y='value', hue='category')
# ファセット化されたリレーショナルプロット
sns.relplot(data=df, x='total_bill', y='tip',
col='time', row='sex', hue='smoker', kind='scatter')
分布プロット (単変量と二変量の分布)
用途: データのスプレッド、形状、確率密度を理解
histplot()- 柔軟なビニング機能を備えた棒グラフベースの度数分布kdeplot()- ガウスカーネルを使用した滑らかな密度推定ecdfplot()- 経験累積分布 (パラメータ調整不要)rugplot()- 個々の観測値のティックマークdisplot()- 単変量と二変量分布用の Figure レベルインターフェースjointplot()- 周辺分布を備えた二変量プロットpairplot()- データセット全体の変数ペア関係マトリックス
主要パラメータ:
x,y- 変数 (y は単変量で省略可)hue- カテゴリ別に分布を分離stat- 正規化: "count"、"frequency"、"probability"、"density"bins/binwidth- ヒストグラムビニング制御bw_adjust- KDE 帯域幅乗数 (大きいほど滑らか)fill- 曲線下の面積を塗りつぶしmultiple- hue の処理方法: "layer"、"stack"、"dodge"、"fill"
# 密度正規化したヒストグラム
sns.histplot(data=df, x='total_bill', hue='time',
stat='density', multiple='stack')
# 等高線付き二変量 KDE
sns.kdeplot(data=df, x='total_bill', y='tip',
fill=True, levels=5, thresh=0.1)
# 周辺分布付きジョイントプロット
sns.jointplot(data=df, x='total_bill', y='tip',
kind='scatter', hue='time')
# ペアワイズ関係
sns.pairplot(data=df, hue='species', corner=True)
カテゴリカルプロット (カテゴリ間の比較)
用途: 離散カテゴリ間での分布または統計の比較
カテゴリカル散布図:
stripplot()- 全観測値を表示するようにジッター付きのポイントswarmplot()- 重複しないポイント (ビースウォームアルゴリズム)
分布比較:
boxplot()- 四分位数と外れ値violinplot()- KDE と四分位数情報boxenplot()- 大規模データセット用の拡張ボックスプロット
統計推定:
barplot()- 平均/集計と信頼区間pointplot()- ポイント推定と接続線countplot()- カテゴリごとの観測値のカウント
Figure レベル:
catplot()- ファセット化されたカテゴリカルプロット (kindパラメータを設定)
主要パラメータ:
x,y- 変数 (通常 1 つがカテゴリカル)hue- 追加のカテゴリグループ化order,hue_order- カテゴリ順序の制御dodge- hue レベルを左右に分離orient- "v" (垂直) または "h" (水平)kind- catplot のプロットタイプ: "strip"、"swarm"、"box"、"violin"、"bar"、"point"
# 全ポイントを表示するスウォームプロット
sns.swarmplot(data=df, x='day', y='total_bill', hue='sex')
# 比較用に分割されたバイオリンプロット
sns.violinplot(data=df, x='day', y='total_bill',
hue='sex', split=True)
# エラーバー付きの棒グラフ
sns.barplot(data=df, x='day', y='total_bill',
hue='sex', estimator='mean', errorbar='ci')
# ファセット化されたカテゴリカルプロット
sns.catplot(data=df, x='day', y='total_bill',
col='time', kind='box')
回帰プロット (線形関係)
用途: 線形回帰と残差の可視化
regplot()- 散布図と近似直線を含む Axes レベルの回帰プロットlmplot()- ファセット機能サポート付き Figure レベルresidplot()- モデル適合度を評価するための残差プロット
主要パラメータ:
x,y- 回帰する変数order- 多項式回帰の次数logistic- ロジスティック回帰を適合robust- ロバスト回帰を使用 (外れ値の影響に対して耐性)ci- 信頼区間幅 (デフォルト 95)scatter_kws,line_kws- 散布図と線のプロパティをカスタマイズ
# シンプルな線形回帰
sns.regplot(data=df, x='total_bill', y='tip')
# ファセット付き多項式回帰
sns.lmplot(data=df, x='total_bill', y='tip',
col='time', order=2, ci=95)
# 残差をチェック
sns.residplot(data=df, x='total_bill', y='tip')
マトリックスプロット (矩形データ)
用途: マトリックス、相関、グリッド構造データの可視化
heatmap()- アノテーション付きの色エンコード行列clustermap()- 階層的にクラスタリングされたヒートマップ
主要パラメータ:
data- 2D 矩形データセット (DataFrame または配列)annot- セル内に値を表示fmt- アノテーションのフォーマット文字列 (例: ".2f")cmap- カラーマップ名center- カラーマップ中央の値 (発散カラーマップ用)vmin,vmax- 色スケール範囲square- 正方形セルを強制linewidths- セル間のギャップ
# 相関ヒートマップ
corr = df.corr()
sns.heatmap(corr, annot=True, fmt='.2f',
cmap='coolwarm', center=0, square=True)
# クラスタリングされたヒートマップ
sns.clustermap(data, cmap='viridis',
standard_scale=1, figsize=(10, 10))
マルチプロットグリッド
Seaborn は複雑なマルチパネル図を作成するためのグリッドオブジェクトを提供します:
FacetGrid
カテゴリ変数に基づいてサブプロットを作成します。Figure レベル関数 (relplot、displot、catplot) を通じて呼び出すときが最も便利ですが、カスタムプロット用に直接使用することもできます。
g = sns.FacetGrid(df, col='time', row='sex', hue='smoker')
g.map(sns.scatterplot, 'total_bill', 'tip')
g.add_legend()
PairGrid
データセット内のすべての変数間のペアワイズ関係を表示します。
g = sns.PairGrid(df, hue='species')
g.map_upper(sns.scatterplot)
g.map_lower(sns.kdeplot)
g.map_diag(sns.histplot)
g.add_legend()
JointGrid
周辺分布を備えた二変量プロットを結合します。
g = sns.JointGrid(data=df, x='total_bill', y='tip')
g.plot_joint(sns.scatterplot)
g.plot_marginals(sns.histplot)
Figure レベルと Axes レベルの関数
この区別を理解することは、Seaborn を効果的に使用するために重要です:
Axes レベル関数
- 単一の matplotlib
Axesオブジェクトにプロット - 複雑な matplotlib 図に簡単に統合可能
ax=パラメータで正確な配置が可能Axesオブジェクトを返却- 例:
scatterplot、histplot、boxplot、regplot、heatmap
使用場面:
- カスタムマルチプロットレイアウトの構築
- 異なるプロットタイプの組み合わせ
- Matplotlib レベルの制御が必要な場合
- 既存の Matplotlib コードとの統合
fig, axes = plt.subplots(2, 2, figsize=(10, 10))
sns.scatterplot(data=df, x='x', y='y', ax=axes[0, 0])
sns.histplot(data=df, x='x', ax=axes[0, 1])
sns.boxplot(data=df, x='cat', y='y', ax=axes[1, 0])
sns.kdeplot(data=df, x='x', y='y', ax=axes[1, 1])
Figure レベル関数
- 全サブプロットを含む Figure 全体を管理
colとrowパラメータによる組み込みファセット機能FacetGrid、JointGrid、またはPairGridオブジェクトを返却- サイズ設定に
heightとaspectを使用 (サブプロットあたり) - 既存 Figure に配置できない
- 例:
relplot、displot、catplot、lmplot、jointplot、pairplot
使用場面:
- ファセット化された可視化 (スモールマルチプル)
- クイック探索的分析
- 一貫したマルチパネルレイアウト
- 他のプロットタイプとの組み合わせが不要な場合
# 自動ファセット機能
sns.relplot(data=df, x='x', y='y', col='category', row='group',
hue='type', height=3, aspect=1.2)
データ構造の要件
ロング形式データ (推奨)
各変数は列、各観測値は行です。この「tidy」形式は最大の柔軟性を提供します:
# ロング形式の構造
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 操作に自然
ワイド形式データ
変数は列全体に広がっています。シンプルな矩形データに便利です:
# ワイド形式の構造
control treatment
0 10.5 12.3
1 9.8 13.1
使用場面:
- シンプルな時系列
- 相関行列
- ヒートマップ
- 配列データのクイックプロット
ワイド形式からロング形式への変換:
df_long = df.melt(var_name='condition', value_name='measurement')
カラーパレット
Seaborn は異なるデータタイプ向けに注意深く設計されたカラーパレットを提供します:
定性的パレット (カテゴリデータ)
色合い変動によるカテゴリを区別:
"deep"- デフォルト、鮮やかな色"muted"- より柔らかく、飽和度が低い"pastel"- 薄く、飽和度を低くした"bright"- 高度に飽和した"dark"- 暗い値"colorblind"- 色覚異常に対応
sns.set_palette("colorblind")
sns.color_palette("Set2")
順序パレット (順序付きデータ)
低値から高値への進行を表示:
"rocket"、"mako"- 広い輝度範囲 (ヒートマップに適切)"flare"、"crest"- 制限された輝度 (ポイント/線に適切)"viridis"、"magma"、"plasma"- Matplotlib の知覚的に均一
sns.heatmap(data, cmap='rocket')
sns.kdeplot(data=df, x='x', y='y', cmap='mako', fill=True)
発散パレット (中心値のあるデータ)
中点からの偏差を強調:
"vlag"- 青から赤"icefire"- 青からオレンジ"coolwarm"- クール から ウォーム"Spectral"- レインボー発散
sns.heatmap(correlation_matrix, cmap='vlag', center=0)
カスタムパレット
# カスタムパレットを作成
custom = sns.color_palette("husl", 8)
# 薄い色から濃い色へのグラデーション
palette = sns.light_palette("seagreen", as_cmap=True)
# 色合いから発散パレットを作成
palette = sns.diverging_palette(250, 10, as_cmap=True)
テーマと美的設定
テーマを設定
set_theme() は全体的な外観を制御します:
# 完全なテーマを設定
sns.set_theme(style='whitegrid', palette='pastel', font='sans-serif')
# デフォルトにリセット
sns.set_theme()
スタイル
背景とグリッドの外観を制御:
"darkgrid"- グリッド付きグレー背景 (デフォルト)"whitegrid"- グリッド付きホワイト背景"dark"- グレー背景、グリッドなし"white"- ホワイト背景、グリッドなし"ticks"- 軸ティック付きホワイト背景
sns.set_style("whitegrid")
# スパインを削除
sns.despine(left=False, bottom=False, offset=10, trim=True)
# 一時的なスタイル
with sns.axes_style("white"):
sns.scatterplot(data=df, x='x', y='y')
コンテキスト
異なる用途に合わせて要素をスケーリング:
"paper"- 最小 (デフォルト)"notebook"- わずかに大きい"talk"- プレゼンテーションスライド"poster"- 大判
sns.set_context("talk", font_scale=1.2)
# 一時的なコンテキスト
with sns.plotting_context("poster"):
sns.barplot(data=df, x='category', y='value')
ベストプラクティス
1. データ準備
常に意味のあるカラム名を持つ well-structured DataFrame を使用してください:
# 良い例: DataFrame 内の命名された列
df = pd.DataFrame({'bill': bills, 'tip': tips, 'day': days})
sns.scatterplot(data=df, x='bill', y='tip', hue='day')
# 避けるべき: 命名されていない配列
sns.scatterplot(x=x_array, y=y_array) # 軸ラベルが失われる
2. 適切なプロットタイプを選択
連続 x、連続 y: scatterplot、lineplot、kdeplot、regplot
連続 x、カテゴリカル y: violinplot、boxplot、stripplot、swarmplot
1 つの連続変数: histplot、kdeplot、ecdfplot
相関/マトリックス: heatmap、clustermap
ペアワイズ関係: pairplot、jointplot
3. ファセット化に Figure レベル関数を使用
# 代わりに手動でサブプロットを作成する方法
sns.relplot(data=df, x='x', y='y', col='category', col_wrap=3)
# ではなく: シンプルなファセット化のために手動でサブプロットを作成
4. セマンティックマッピングを活用
hue、size、style を使用して追加のディメンションをエンコード:
sns.scatterplot(data=df, x='x', y='y',
hue='category', # カテゴリ別に色付け
size='importance', # 連続変数でサイズ設定
style='type') # タイプでマーカースタイルを設定
5. 統計推定を制御
多くの関数は統計を自動的に計算します。理解してカスタマイズしてください:
# Lineplot はデフォルトで平均と 95% CI を計算
sns.lineplot(data=df, x='time', y='value',
errorbar='sd') # 代わりに標準偏差を使用
# Barplot はデフォルトで平均を計算
sns.barplot(data=df, x='category', y='value',
estimator='median', # 代わりに中央値を使用
errorbar=('ci', 95)) # ブートストラップ 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') # 出版用ベクター形式
一般的なパターン
探索的データ分析
# すべての関係の概要を表示
sns.pairplot(data=df, hue='target', corner=True)
# 分布の探索
sns.displot(data=df, x='variable', hue='group',
kind='kde', fill=True, col='category')
# 相関分析
corr = df.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', center=0)
出版品質の図
sns.set_theme(style='ticks', context='paper', font_scale=1.1)
g = sns.catplot(data=df, x='treatment', y='response',
col='cell_line', kind='box', height=3, aspect=1.2)
g.set_axis_labels('Treatment Condition', 'Response (μM)')
g.set_titles('{col_name}')
sns.despine(trim=True)
g.savefig('figure.pdf', dpi=300, bbox_inches='tight')
複雑なマルチパネル図
# matplotlib サブプロットを Seaborn で使用
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
sns.scatterplot(data=df, x='x1', y='y', hue='group', ax=axes[0, 0])
sns.histplot(data=df, x='x1', hue='group', ax=axes[0, 1])
sns.violinplot(data=df, x='group', y='y', ax=axes[1, 0])
sns.heatmap(df.pivot_table(values='y', index='x1', columns='x2'),
ax=axes[1, 1], cmap='viridis')
plt.tight_layout()
信頼区間付き時系列
# Lineplot は自動的に集計して CI を表示
sns.lineplot(data=timeseries, x='date', y='measurement',
hue='sensor', style='location', errorbar='sd')
# より細かい制御の場合
g = sns.relplot(data=timeseries, x='date', y='measurement',
col='location', hue='sensor', kind='line',
height=4, aspect=1.5, errorbar=('ci', 95))
g.set_axis_labels('Date', 'Measurement (units)')
トラブルシューティング
問題: 凡例がプロット領域の外側にある
Figure レベル関数はデフォルトで凡例を外側に配置します。内側に移動するには:
g = sns.relplot(data=df, x='x', y='y', hue='category')
g._legend.set_bbox_to_anchor((0.9, 0.5)) # 位置を調整
問題: ラベルが重なっている
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
問題: 図が小さすぎる
Figure レベル関数の場合:
sns.relplot(data=df, x='x', y='y', height=6, aspect=1.5)
Axes レベル関数の場合:
fig, ax = plt.subplots(figsize=(10, 6))
sns.scatterplot(data=df, x='x', y='y', ax=ax)
問題: 色の区別が不十分
# 異なるパレットを使用
sns.set_palette("bright")
# または色数を指定
palette = sns.color_palette("husl", n_colors=len(df['category'].unique()))
sns.scatterplot(data=df, x='x', y='y', hue='category', palette=palette)
問題: KDE が滑らかすぎるまたはギザギザ
# 帯域幅を調整
sns.kdeplot(data=df, x='x', bw_adjust=0.5) # より滑らかでない
sns.kdeplot(data=df, x='x', bw_adjust=2) # より滑らか
リソース
このスキルには深い理解のための参考資料が含まれています:
references/
function_reference.md- パラメータと例を含むすべての Seaborn 関数の包括的な一覧objects_interface.md- モダン seaborn.objects API への詳細なガイドexamples.md- 異なる分析シナリオの一般的な使用例とコードパターン
必要に応じて参考ファイルを読み込んで、詳細な関数シグネチャ、高度なパラメータ、または特定の例を参照してください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- davila7
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。