Seaborn チュートリアル
Seaborn は Matplotlib を基盤とした Python データ可視化ライブラリであり、さまざまな統計グラフを描画して、データをより簡単に提示・理解できるようにすることに重点を置いています。
Seaborn の設計目標は、統計データの可視化プロセスを簡素化し、高レベルなインターフェースと美しいデフォルトテーマを提供することで、ユーザーが少ないコードで複雑なグラフを実現できるようにすることです。
Seaborn はシンプルな高レベルインターフェースをいくつか提供しており、散布図、折れ線グラフ、棒グラフ、ヒートマップなど、さまざまな統計グラフを簡単に描画でき、優れた美的効果も備えています。
Seaborn は設計時に美しさを重視しており、デフォルトのテーマとカラーパレットは厳選されているため、グラフがより魅力的になります。
Seaborn のインストール:
pip install seaborn
Seaborn は複数の組み込みテーマとカラーパレットを提供しており、設定によってグラフの外観を変更できます。
実例
# テーマとカラーパレットを設定
sns.set_theme(style="whitegrid", palette="pastel")
sns.set_theme() 関数を設定することで、さまざまなテーマとコンテキストを選択できます。以下は Seaborn に組み込まれているテーマとコンテキストの一部です:
テーマ
darkgrid(デフォルト):ダークグリッドテーマ。
import seaborn as sns # 设置为 darkgrid 主题 sns.set_theme(style="darkgrid")
whitegrid:ライトグリッドテーマ。
import seaborn as sns # 设置为 whitegrid 主题 sns.set_theme(style="whitegrid")
dark:ダークテーマ。グリッドなし。
import seaborn as sns # 设置为 dark 主题 sns.set_theme(style="dark")
white:ライトテーマ。グリッドなし。
import seaborn as sns # 设置为 white 主题 sns.set_theme(style="white")
ticks:ダークテーマ。目盛り付き。
import seaborn as sns # 设置为 ticks 主题 sns.set_theme(style="ticks")
コンテキスト
paper:小さな図に適しており、ラベルと線が小さい。
import seaborn as sns # 设置为 paper 模板 sns.set_theme(context="paper")
notebook(デフォルト):ノートパソコンや類似の環境に適しており、中程度のサイズのラベルと線を持つ。
import seaborn as sns # 设置为 notebook 模板 sns.set_theme(context="notebook")
talk:プレゼンテーションのスライドに適しており、大きなサイズのラベルと線を持つ。
import seaborn as sns # 设置为 talk 模板 sns.set_theme(context="talk")
poster:ポスターに適しており、非常に大きなサイズのラベルと線を持つ。
import seaborn as sns # 设置为 poster 模板 sns.set_theme(context="poster")
さまざまなテーマとコンテキストを設定することで、Seaborn グラフのサイズ、線の太さ、色などの属性を調整し、さまざまなプロットシーンに対応できます。これらの組み込みテーマとコンテキストにより、ユーザーは美しく一貫性のあるグラフをより簡単に作成できます。
以下の例では、Seaborn と Matplotlib を使用して、異なる製品の販売状況を示す簡単な棒グラフを描画しています:
実例
import matplotlib.pyplot as plt
# テーマとカラーパレットを設定
sns.set_theme(style="darkgrid", palette="pastel")
# サンプルデータ
products = ["Product A", "Product B", "Product C", "Product D"]
sales = [120, 210, 150, 180]
# 棒グラフを作成
sns.barplot(x=products, y=sales)
# ラベルとタイトルを追加
plt.xlabel("Products")
plt.ylabel("Sales")
plt.title("Product Sales by Category")
# グラフを表示
plt.show()
結果は次の図のようになります:

プロット関数
Seaborn はさまざまな統計グラフを作成するための複数のプロット関数を提供しています。以下は Seaborn の主要なプロット関数と対応する例です:
1. 散布図 - sns.scatterplot()
2つの変数間の散布図を描画するために使用され、必要に応じてトレンドラインを追加できます。
実例
import matplotlib.pyplot as plt
import pandas as pd
# サンプルデータフレームを作成
data = {'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}
df = pd.DataFrame(data)
# 散布図を描画
sns.scatterplot(x='A', y='B', data=df)
plt.show()
結果は次の図のようになります:

2. 折れ線グラフ - sns.lineplot()
ある変数が別の変数に伴って変化するトレンドライングラフを描画するために使用されます。
実例
import matplotlib.pyplot as plt
import pandas as pd
# サンプルデータフレームを作成
data = {'X': [1, 2, 3, 4, 5], 'Y': [5, 4, 3, 2, 1]}
df = pd.DataFrame(data)
# 折れ線グラフを描画
sns.lineplot(x='X', y='Y', data=df)
plt.show()
結果は次の図のようになります:

3. 棒グラフ - sns.barplot()
変数の平均値やその他の集計関数に基づく棒グラフを描画するために使用されます。
実例
import matplotlib.pyplot as plt
import pandas as pd
# サンプルデータフレームを作成
data = {'Category': ['A', 'B', 'C'], 'Value': [3, 7, 5]}
df = pd.DataFrame(data)
# 棒グラフを描画
sns.barplot(x='Category', y='Value', data=df)
plt.show()
結果は次の図のようになります:

4. 箱ひげ図 - sns.boxplot()
中央値や四分位数などを含む、変数の分布を描画するために使用されます。
実例
import matplotlib.pyplot as plt
import pandas as pd
# サンプルデータフレームを作成
data = {'Category': ['A', 'A', 'B', 'B', 'C', 'C'], 'Value': [3, 7, 5, 9, 2, 6]}
df = pd.DataFrame(data)
# 箱ひげ図を描画
sns.boxplot(x='Category', y='Value', data=df)
plt.show()
結果は次の図のようになります:

5. ヒートマップ - sns.heatmap()
行列データのヒートマップを描画するために使用され、通常は相関行列の表示に使用されます。
実例
import matplotlib.pyplot as plt
import pandas as pd
# サンプルデータフレームを作成
data = {'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}
df = pd.DataFrame(data)
# 相関行列を作成
correlation_matrix = df.corr()
# ヒートマップを使用して相関行列を可視化
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=".2f")
plt.show()
結果は次の図のようになります:

6. バイオリンプロット - sns.violinplot()
分布の形状と密度推定を表示するために使用され、箱ひげ図とカーネル密度推定を組み合わせたものです。
実例
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# サンプルデータフレームを作成
data = {'Category': ['A', 'A', 'B', 'B', 'C', 'C'], 'Value': [3, 7, 5, 9, 2, 6]}
df = pd.DataFrame(data)
# バイオリンプロットを描画
sns.violinplot(x='Category', y='Value', data=df)
plt.show()
結果は次の図のようになります:

その他の拡張詳細は公式サイトのチュートリアルを参照してください:https://seaborn.pydata.org/tutorial.html