▶ matplotlibによる可視化を基本から解説しています。以下の投稿も合わせてご覧ください。
はじめに
今回はmatplotlibで散布図を描く方法を基本から解説します。引数は必要な時に「Shift + Tab」でdocstringをみて確認すればよいので、全部覚える必要はありません。基本的な使い方と、どんなことができるかを抑えておけばよいでしょう。さっそく始めましょう。
散布図を描く
書式
はじめに書式を確認しておきましょう。
たったこれだけです。x, yにx座標、y座標を指定するだけです。このx,yは配列で指定することもできます。また、plt.plot()の場合と同様にdf[‘列名’]のようにSeriesを指定することもできるし、x=’列名’としておいて、data=dfというように後からデータフレームを指定するやり方でもOKです。
まずはサンプルデータを用意しましょう。今回もseabornに準備されている学習用データセットのtipsを使います。
# ライブラリのインポート
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# データセット読み込み
df = sns.load_dataset('tips')
df.head()
散布図を描く
では早速描いていきましょう。今回はtotal_billとtipの関係を見ることにしましょう。
# 散布図を描く
plt.scatter('total_bill','tip',data=df)
できました。これが基本です。ただ、マーカーが密集しているところでは重なってしまってわかりにくいですね。マーカーの透明度を設定することができます。これらは覚えようとしなくても、その都度確認していれば自然に覚えるので、しばらくはdocstringを確認しながら進めるとよいでしょう。
docstringのparameterの部分を見ると、alphaという引数があります。これで透明度を指定することができます。
# 散布図を描く
plt.scatter('total_bill','tip',data=df,alpha=0.3)
だいぶ見やすくなりましたね。ただ、これでは何のグラフなのかパット見わからないですね。グラフのタイトルや軸ラベルを設定するとわかりやすいです。これは次の投稿を参考にしてください。
# 散布図を描く:タイトルと軸ラベルを記載
plt.scatter('total_bill','tip',data=df,alpha=0.3)
plt.title('請求額とチップの関係',fontsize=20)
plt.xlabel('請求額',fontsize=15)
plt.ylabel('チップ',fontsize=15)
バブルチャートを描く
散布図のマーカーに情報を持たせてみましょう。ここでは、マーカーサイズに人数(size)の情報を持たせてみましょう。このようにマーカーサイズに情報を持たせたものをバブルチャートといいます。これは次の書式となります。
sに持たせる情報を与えてあげればよいです。やってみましょう。
# バブルチャート
plt.scatter('total_bill','tip',s='size',data=df,alpha=0.3)
plt.title('請求額とチップの関係',fontsize=20)
plt.xlabel('請求額',fontsize=15)
plt.ylabel('チップ',fontsize=15)
できました。ただ、バブルが小さすぎてよくわかりません。これは次のようにするとよいでしょう。
# バブルチャート:バブルを大きく
plt.scatter(df['total_bill'],df['tip'],s=df['size']*50,alpha=0.3)
plt.title('請求額とチップの関係',fontsize=20)
plt.xlabel('請求額',fontsize=15)
plt.ylabel('チップ',fontsize=15)
だいぶ見やすくなりましたね。バブルに持たせる情報によっては小さく表示されてしまったり、差がわかりにくい場合もありますね。今回のように全体的に値が小さい場合は、定数倍してしまうとよいでしょう。
まとめ
今回は散布図とバブルチャートの基本を扱いました。慣れてしまえば簡単です。覚える必要はなく、「Shift + Tab」でDocstringを確認しながら描画していくとよいでしょう。
コメント