Seaborn(シーボーン)は、Matplotlibをベースにした高レベルのPython向けデータ可視化ライブラリです。2014年にMichael Waskomが公開し、統計グラフの作成に特化しています。散布図やヒートマップ、分布グラフを数行のコードで、しかも既定で見栄えよく描けるのが最大の特徴です。この記事では、Seabornとは何かという定義から、Matplotlibとの違い・pipでのインストール・主要なグラフの作り方までを、最新版0.13.2で動くコードとともに整理します。
まとめ:Seabornの要点
- 正体:Matplotlibをラップした統計可視化ライブラリ。低レベルのMatplotlibより短いコードで統計グラフを描ける。
- 読み方:「シーボーン」。作者はMichael Waskom、初公開は2014年。
- インストール:
pip install seabornの一行。依存するnumpy・pandas・matplotlibも自動で入る。最新版は0.13.2(対応Python 3.8以上)。 - 使い方の基本:
import seaborn as snsで読み込み、sns.散布図関数(data=df, x=, y=)の形で呼ぶ。データはpandasのDataFrameで渡す。 - Matplotlibとの関係:競合ではなく併用が前提。グラフ本体はSeaborn、タイトルや軸ラベルの微調整はMatplotlibで行う。
以下、それぞれを動くサンプルコードつきで詳しく見ていきます。
Seabornとは:統計グラフに特化した可視化ライブラリ
Seabornは、Pythonでデータの分布や変数間の関係を視覚化するためのライブラリです。内部でMatplotlibを呼び出す「高レベルAPI」として設計されており、Matplotlibなら十数行かかる統計グラフを1〜2行で書けます。既定で洗練されたカラーテーマとスタイルが適用されるため、設定を書かなくても発表資料に使える見た目になります。
統計的なプロット機能が組み込まれている点が、汎用描画ライブラリとの決定的な違いです。ヒストグラムやカーネル密度推定による分布の可視化、カテゴリごとの集計、回帰直線つき散布図、相関行列のヒートマップなどを、専用の関数一つで呼び出せます。そのため、データを最初に眺めて傾向をつかむ探索的データ解析(EDA)と特に相性が良いライブラリです。データの受け渡しにはPandasで整えたDataFrameを使うのが一般的で、数値計算ライブラリのNumPyと合わせて、データ分析の標準的な組み合わせになっています。
SeabornとMatplotlibの違いと使い分け
SeabornとMatplotlibは対立するものではなく、役割が異なります。低レベルで自由度の高いMatplotlibがグラフの一つひとつの部品を細かく制御できるのに対し、Seabornはよく使う統計グラフを短いコードで描くことに寄せた高レベルの層です。両者の性格を整理すると次のようになります。
| 観点 | Matplotlib | Seaborn |
|---|---|---|
| レベル | 低レベル(部品を制御) | 高レベル(Matplotlibのラッパー) |
| コード量 | 多い | 少ない(統計グラフを1行) |
| 既定の見た目 | 素朴 | 洗練されたテーマ |
| 統計プロット | 自前で計算 | 分布・回帰・カテゴリを標準搭載 |
| 向く用途 | 任意の図・細かい調整 | EDA・統計可視化 |
実務での使い分けははっきりしています。グラフ本体はSeabornで描き、タイトル・軸ラベル・凡例の位置といった仕上げはMatplotlibで調整するのが定番です。Seabornの関数はMatplotlibのAxes上に描画するため、描いた後にplt.title() などをそのまま重ねられます。逆に、独自レイアウトの複雑な図や、統計グラフを使わない自由な描画では、無理にSeabornを挟まずMatplotlibを直接使うほうが素直です。
Seabornのインストールと最初のグラフ
pipでインストールする
インストールはpipの一行で完了します。SeabornはMatplotlib・pandas・NumPyに依存しますが、これらは同時に自動で導入されるため個別指定は不要です。
pip install seaborn
最新版は0.13.2(2024年1月リリース、2026年7月時点で最新)で、対応するPythonは3.8以上です。特定バージョンを固定したい場合は pip install seaborn==0.13.2 のようにバージョンを指定します。プロジェクトごとに環境を分けたいときは仮想環境を作ってからインストールすると、他プロジェクトへの影響を避けられます。condaとpipのどちらでパッケージを管理するかは、既存環境がAnaconda中心かどうかで決めると混乱しません。
importして最初のグラフを描く
慣例として import seaborn as sns と別名snsで読み込みます。Matplotlibも合わせて読み込み、付属のサンプルデータで散布図を描くと、次のように数行で完成します。
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
sns.set_theme(style="whitegrid")
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="day")
plt.show()
テーマの適用は現行版では sns.set_theme() を使います(sns.set() は同じ働きの旧称エイリアスです)。load_dataset() はtipsやiris、flightsなど学習用データを取得する関数で、動作確認やサンプル作成に便利です。初回はサンプルデータをオンラインのリポジトリから取得するため、実行時はインターネット接続が必要です。
Seabornで作れる主要なグラフの種類
Seabornのグラフは、目的別に「分布・カテゴリを見る」「変数間の関係を見る」「行列・相関を見る」の3系統で捉えると選びやすくなります。ここでは検索でよく探される代表的な関数を、それぞれ動くコードで示します。
分布とカテゴリを見る(histplot・countplot・violinplot)
1変数の分布や、カテゴリごとの件数を把握するグラフです。countplot はカテゴリの出現回数をそのまま棒グラフにする関数で、曜日別・製品別の件数集計に向きます。
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
# ヒストグラム(数値の分布)
sns.histplot(data=tips, x="total_bill", bins=20)
plt.show()
# countplot(カテゴリごとの件数)
sns.countplot(data=tips, x="day")
plt.show()
# バイオリンプロット(分布の形+密度)
sns.violinplot(data=tips, x="day", y="total_bill")
plt.show()
ヒストグラムは値がどの範囲に偏っているか、countplotはどのカテゴリが多いか、violinplotは箱ひげ図では見えない分布の山の形まで、それぞれ読み取れます。まず分布を確認してから関係性の分析に進むのがEDAの定石です。
変数間の関係を見る(scatterplot・lineplot・pairplot)
2変数の相関や時系列の推移を見る系統です。lineplot は時系列の推移、pairplot は全変数の組み合わせを一気に散布図化してデータ全体の見取り図を作ります。
import seaborn as sns
import matplotlib.pyplot as plt
flights = sns.load_dataset("flights")
# 折れ線グラフ(年ごとの推移)
sns.lineplot(data=flights, x="year", y="passengers")
plt.show()
# ペアプロット(全変数の関係を一覧)
sns.pairplot(sns.load_dataset("iris"), hue="species")
plt.show()
なお、flightsデータは同じ年に複数月を含むため、lineplot はそれらを自動で平均し、ばらつきを示す信頼区間の帯を一緒に描きます。単純な折れ線だけが欲しい場合は errorbar=None を渡すと帯が消えます。pairplotは変数が多いほど一覧性が高く、どの2変数に相関がありそうかの当たりをつけるのに向きます。
行列・相関を見る(heatmap)
相関行列やピボット集計を色の濃淡で表すのがヒートマップです。ここで注意したいのが、集計に使うpandasの pivot です。現行のpandasでは pivot の引数がキーワード専用になっており、pivot("month", "year", "passengers") のように位置引数で渡すと TypeError になります。必ず index=・columns=・values= を明示してください。古い解説記事のコードがそのまま動かない典型例です。
import seaborn as sns
import matplotlib.pyplot as plt
flights = sns.load_dataset("flights")
# pivotはキーワード引数で指定する(位置引数はTypeError)
matrix = flights.pivot(index="month", columns="year", values="passengers")
sns.heatmap(matrix, annot=True, fmt="d", cmap="YlGnBu")
plt.show()
ヒートマップは、色の濃い箇所に値が集中していることが一目で分かるため、相関の強い変数の組や、季節・時間帯による偏りを見つけるのに向きます。annot=True で各セルに数値を重ねられ、fmt="d" は整数表示の指定です。Seaborn以外の可視化ライブラリと比較検討したい場合は、インタラクティブ操作に強いPlotlyによる可視化やBokehの基本も選択肢になります。用途が静的な統計グラフの量産ならSeaborn、Web上での操作を伴うならPlotly/Bokeh、という住み分けが目安です。
Seabornに関するよくある質問
Seabornの読み方は?
「シーボーン」と読みます。名称の由来には諸説あり、米ドラマ「ザ・ホワイトハウス(The West Wing)」の登場人物Sam Seabornにちなむという説が知られています。いずれにせよライブラリの機能とは直接関係がないため、統計可視化ライブラリの固有名詞として覚えれば十分です。
import seaborn as sns の sns とは何ですか?
sns はSeabornに付ける別名(エイリアス)で、コード内で seaborn.scatterplot() と書く代わりに sns.scatterplot() と短く書くための慣例です。公式ドキュメントやサンプルもほぼすべてこの別名を使うため、import seaborn as sns と書くのが事実上の標準になっています。
Seabornの最新バージョンは?pip installで最新版が入りますか?
2026年7月時点の最新版は0.13.2です。pip install seaborn はバージョンを指定しなければ最新版を導入します。すでに導入済みの環境を更新するときは pip install --upgrade seaborn を実行してください。
SeabornだけあればMatplotlibは不要ですか?
不要ではありません。SeabornはMatplotlibの上に構築されているため、インストール時にMatplotlibも必要で、グラフ表示の plt.show() やタイトル調整でMatplotlibの関数を併用します。役割分担で使うのが前提です。
古いSeabornのコードが動かないのはなぜですか?
多くは依存ライブラリ側の仕様変更が原因です。代表例が本文でも触れたpandasの pivot のキーワード専用化で、位置引数の古いコードはエラーになります。エラーメッセージに出た関数名で最新の公式ドキュメントを確認し、引数の渡し方を合わせるのが解決の近道です。