Chapter 03

Seaborn で散布図作成

mimitako
mimitako
2022.10.09に更新

Seaborn で散布図を作成する

seaborn で散布図を作成していきます。

モジュールのインポート

各ライブラリを使えるようにするためモジュールのインポートを行います。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

今回は、データセットもseabornのものをそのまま利用します。

データセットはこの様になっています。

sepal lengthはがくの長さ、sepal widthはがくの幅、petal lengthは花びらの長さ、petal widthは花びらの幅です。species はirisことあやめの種類を示しています。

散布図を書いてみる

まずは散布図を書いてみます。今回はがくの長さと幅がどのようになっているのかを見てみます。dataにはデータフレーム、xやyには各列名を指定します。

fig, ax = plt.subplots(1,1,dpi = 300) # グラフエリアの定義
ax = sns.scatterplot(data=iris_data, x = "sepal_length", y = "sepal_width") # グラフの作成
# グラフの軸名などを定義
ax.set_xlabel("sepal_length")
ax.set_ylabel("sepal_width")
ax.set_title("Iris sepal_length vs sepal_width")

とりあえず表示できましたが、このままだとよくわからないですね。花の種類ごとに違いがあるか見てみます。

カテゴライズされたデータを分離する。

花の種類はspeciesのカラムで指定されていたので、それを使います。

fig, ax = plt.subplots(1,1,dpi = 300)
ax = sns.scatterplot(data=iris_data, x = "sepal_length", y = "sepal_width", hue = "species")
ax.set_xlabel("sepal_length")
ax.set_ylabel("sepal_width")
ax.set_title("Iris sepal_length vs sepal_width")

前回と今回で何が違うかといえば、hueを追加したことにより種類が表示されるようになりました。

カテゴライズされているデータであればこのように分けて表示できます。これで、なにか傾向があるかも?/ないかも?という分析が容易になりますね。

色の指定

seabornは色の指定がいろいろとできます。hueでカテゴリを分ける場合はpaletteで色マップを指定します。

fig, ax = plt.subplots(1,1,dpi = 300)
ax = sns.scatterplot(data=iris_data, x = "sepal_length", y = "sepal_width", hue = "species", palette="hls")
ax.set_xlabel("sepal_length")
ax.set_ylabel("sepal_width")
ax.set_title("Iris sepal_length vs sepal_width")

選べる色は様々ありますが、スタンダードなものはこちらで確認してみてください。

マーカーを変更する

特に指定しない限り、マーカーは○になります。マーカーを指定する場合は次の通り指定します。

ax = sns.scatterplot(
  data=iris_data, 
  x = "sepal_length", 
  y = "sepal_width",
  style="species",  # styleを追加する。
  hue="species", 
  palette="hls", 
  markers={"setosa":"o","versicolor":"s","virginica":"X"} # markersで指定する。bool/list/dictで指定可能。
  )

科学技術の資料であれば見栄えや他のグラフとの整合性の観点からマーカーを統一することがあります。細かく制御する場合は辞書による指定がおすすめです。

あまり気にしないのであればリストで指定すると良いでしょう。