本ページでは、Python のデータ可視化ライブラリ、Seaborn (シーボーン) を使い、散布図の外側にヒストグラムを出力したグラフの作成方法を紹介します。通常の散布図に比べて、ヒストグラムを載せることで、最頻値や分布の状況を簡単に把握することができます。
jointplot: ヒストグラムつきの散布図を作成する
seaborn.jointplot メソッドは、散布図を描画し、その外側にヒストグラムを出力します。以下に紹介するパラメーターを指定することで、散布図だけでなく、六角形のヒートマップを用いて分布を可視化することもできます。
seaborn.jointplot の使い方
1 2 3 4 |
seaborn.jointplot(x, y, data=None, kind='scatter', stat_func=<function pearsonr>, color=None, size=6, ratio=5, space=0.2, dropna=True, xlim=None, ylim=None, joint_kws=None, marginal_kws=None, annot_kws=None, **kwargs) |
seaborn.jointplot の主要な引数
x, y | データをベクトルで指定、または、データセットの列名を文字列で指定。 |
---|---|
data | 描画に用いるデータフレーム。出力対象の列名は上記 x と y で指定します。 |
kind | プロットの種類。以下から指定する。"scatter" : 散布図"reg" : 散布図と回帰直線"resid" : y 軸に回帰直線からの残差 (誤差) を出力する"kde" : カーネル密度推定を用いた等高線風の図"hex" : 六角形のヒートマップ |
stat_func | 散布図の右上に表示する統計量を計算する関数。入力パラメータは、(x, y) の 2 値であり、出力は (統計量, p 値) で構成される必要があります。 |
color | 各要素をプロットする際に用いる matplotlib の色名を指定。 |
size | 図のサイズを数値で指定。 |
ratio : numeric, optional | Ratio of joint axes size to marginal axes height. |
space | 散布図と散布図の外側に出力するヒストグラムの間の空きスペースの大きさを数値で指定する。 |
dropna | True に設定すると、欠損値を乗り除きます。 |
xlim, ylim | x軸、y軸の下限、上限をタプル (下限, 条件) で指定。 |
joint_kws, marginal_kws, annot_kws | プロットに用いる各種オプションをディクショナリで指定。 |
グラフの出力例
横軸に総支払額、縦軸にチップの額を出力します。
総支払額が増えるほどチップの額が増えることがわかり、さらに、支払額の最頻値は 10 〜 20 ドル、チップは 2 〜 4 ドルであることが見て取れます。
1 2 3 4 5 6 7 8 9 10 11 |
import pandas as pd import seaborn as sns # レストランのチップの額のデータセットをロードします。 tips = sns.load_dataset("tips") # 背景を白に設定 sns.set(style="white", color_codes=True) # グラフを出力 sns.jointplot(x="total_bill", y="tip", data=tips) |
kind="hex"
と指定し、上記の散布図を六角形のヒートマップ形式として表示します。
1 |
sns.jointplot("total_bill", "tip", data=tips, kind="hex") |
参考・ソースコード出典:
seaborn.jointplot — seaborn 0.7.1 documentation