Seabornを用いたヒストグラム(histplot)の作り方

Seabornのhistplotは、ヒストグラムを作成するための関数です。ヒストグラムでは、データが区切られた範囲(ビン)にどの程度分布しているかを棒グラフで示します。

histplotの使い方

histplotでは次のような簡単なコードの記述により、洗練されたヒストグラムを作ることができます。

import seaborn as sns
import numpy as np

sns.set_theme()

# ランダムなデータセットを生成
data = np.random.normal(size=1000)

# ヒストグラムを描画
sns.histplot(data, bins=30, kde=True, color='blue')
seaborn histplot, example

histplotに渡す引数により、カスタマイズされたヒストグラムの生成ができます。例えば以下のようなものです。

  • データの指定: dataでデータセットを、xyで軸上の変数を選びます。
  • 色分け: hueで異なるデータ群を色分けして表示できます。
  • ビンの調整: binsbinwidthbinrangeでビンの数や幅、範囲をカスタマイズ可能です。
  • 統計の表示: statでビン内のデータを数、頻度、確率など様々な統計量で表示できます。
  • カーネル密度推定: kdeをTrueにすると、滑らかな曲線で分布を示すことができます。

histplotによるさまざまなヒストグラムの作成

ここからは、Seabornが用意しているペンギンの羽の長さに関するデータセットを用いて、さまざまなヒストグラムのカスタマイズを行なってみます。

基本的なヒストグラムの描画

最初に、ペンギンのフリッパーの長さ(flipper_length_mm)の分布を描画してみましょう。

import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme()

# データセットの読み込み
penguins = sns.load_dataset("penguins")

# フリッパーの長さの分布を描画
sns.histplot(data=penguins, x="flipper_length_mm")
seaborn histplot, penguins data set

ヒストグラムの向きを変更

データ変数をy軸に割り当てることで、ヒストグラムの向きを変更できます。

sns.histplot(data=penguins, y="flipper_length_mm")
plt.show()
seaborn histplot_横向き

ビンの幅を変更

ビンの幅(binwidth)を指定することで、横軸の範囲を細かくしてヒストグラムを描画することができます。

sns.histplot(data=penguins, x="flipper_length_mm", binwidth=3)
seaborn histplot_ビンの幅

ビンの数を指定

全体のビンの数(bins)を指定することもできます。

sns.histplot(data=penguins, x="flipper_length_mm", bins=30)
seaborn histplot bin number

カーネル密度推定の追加

ヒストグラムにカーネル密度推定(kde=True)を追加して、分布の形状について補助的な情報を提供します。

sns.histplot(data=penguins, x="flipper_length_mm", kde=True)
seaborn histplot kde

種別ごとの分布の比較

hueパラメータを使用して、ペンギンの種別(species)ごとに色分けしたヒストグラムを描画します。

sns.histplot(data=penguins, x="flipper_length_mm", hue="species")
seaborn histplot hue

分布の積み重ね

複数の分布を積み重ね(multiple="stack")て表示することができます。

sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
seaborn histplot multiple=stack

ステップ関数の描画

棒グラフではなく、ステップ関数(element="step")を描画して分布を比較します。

sns.histplot(penguins, x="flipper_length_mm", hue="species", element="step")
seaborn histplot step

対数スケールでの描画

実際のデータはしばしば歪んでいます。歪んだ分布に対しては、ビンを対数スケール(log_scale=True)で定義すると良いでしょう。

# データセットの読み込み
planets = sns.load_dataset("planets")

# 対数スケールでのヒストグラム描画
sns.histplot(data=planets, x="distance", log_scale=True)
seaborn histplot log

まとめ

seabornを用いてさまざまなヒストグラム(histplot)の作り方を見てきました。データの分析やプレゼンテーションに役立てていただけると幸いです。

上部へスクロール