matplotlibとseabornの散布図の違いを検証してみる【サンプルコード有り】

はじめに

前回、pythonのグラフ表示モジュールにはMatplotlibがあることを紹介し、カンタンな使い方をご紹介しました。これからはデータの可視化、ビジュアライゼーションが求められていく中で、Matplotlibを用いたわかりやすいデータの表現は大変有効だと思われます。

実はPythonには前回紹介したMatplotlibの他にもseabornというグラフ表示モジュールがあります。

こちらのSeabornもデータの読み込みからグラフ表示までシンプルかつ使いやすいモジュールとなっています。今回はこのSeabornの使い方をご紹介したいと思います。

※本記事の内容を実機で試してみたいという方は以下の記事を参考に開発環境をご準備ください
Pythonやるならド定番!Anacondaをサクッと入れて巨人の肩に乗りましょう!
Win10&Anaconda3環境でJupyter Notebookを起動してプログラムを実行する方法
個人情報保護方針及び免責事項

matplotlibとseabornの違いとは

matoplotlibは代表的なグラフ表示モジュールです。かなり古くから使われており、サンプルプログラムの多くはこちらで書かれたものが多いです。それに対してseabornはmatplotlibをベースに作られたデータビジュアライゼーションのライブラリです

両者には共通点が多くありますが、して言えばseabornのほうがmatplotlibを継承して拡張されたライブラリであり、表現方法ふくめ、多くの機能を所持しています。どちらもデータ可視化を行う上では必須になると思われます。

今回は、このmatplotlibとseabornの2つで散布図を作成し、両者の違いに注目してまいりましょう

matplotlibとseabornの散布図の違いを検証してみる

それでは両者の違いを検証してみましょう!

matplotlibで散布図表示するソースコード

matplotlibで散布図を表示してみましょう!

# サンプルデータの読み込み
from sklearn.datasets import load_iris
iris = load_iris()

# データフレームに読み込み
import pandas as pd
df = pd.DataFrame(iris.data, columns=iris.feature_names)

# グラフ描画領域の調整
import matplotlib.pyplot as plt
plt.figure(figsize=(6,6))

# 散布図の表示
plt.scatter(df['sepal length (cm)'], df['petal length (cm)'])

# ラベル表示
plt.xlabel('sepal length (cm)')
plt.ylabel('petal length (cm)')
plt.show()

実行結果は以下のようになります。

がく片の長さと幅の分布を可視化するとこのようになります。

seabornで散布図表示するソースコード

seabornで散布図を表示してみましょう!matplotlibと違ってデータの読み込みもseabornがやってくれて、またデータフレームへの取り込みもやってくれるのでコードが短くてすみます。

import seaborn as sns

# サンプルデータの読み込み
df_iris = sns.load_dataset("iris")
display(df_iris.head())

plt.figure(figsize=(6,6))
sns.scatterplot(x='sepal_length', y='petal_length', hue='species', s=70,
    data=df_iris)
plt.show()

読み込んだデータを.headで確認すると、あやめの種別(spuecis)があるのがわかります。これを散布図の表現に取り込んだのが hue=’species’ になります。

散布図は以下になります。種類に応じた表示の変化があり、より可視性が向上しています。

おわりに

今回はmatplotlibとseabornの散布図の違いを検証してみました。matplotlibと比較するとseabornのほうが表現方法、可視性に優れた印象を受けます。データビジュアライゼーションに力点をおいた場合、seabornの使用が今後一般的になってくるかもしれません。