【Matplotlib】matplotlob.pyplot.scatterの引数一覧

Python

【はじめに】

今回は、Matplotlibのmatplotlib.pyplot.scatterメソッドの引数を一覧にしました。

また、実際に引数を使用して基本的な散布図の作成方法も紹介します。

使えるようになると作成できるグラフの種類の幅が広がるので、この機会にマスターしていきましょう。

本記事の内容

  • matplotlob.pyplot.scatterの引数一覧
  • 基本的な散布図を作成する
  • サイズ、色、不透明度、線の太さ、色を指定する
  • タイトル、ラベル、グリッド線を表示する
  • カラーマップを指定して、値に応じてマーカーを着色する

【matplotlob.pyplot.scatterの引数一覧】

引数 指定する値
x, y グラフに出力するデータ
s サイズ (デフォルト値: 20)
c 色、または、連続した色の値
marker マーカーの形 (デフォルト値: ‘o’= 円)
cmap カラーマップ。c が float 型の場合のみ利用可能
norm c を float 型の配列を指定した場合のみ有効。正規化を行う場合の Normalize インスタンスを指定。
vmin 正規化時の最小値。 指定しない場合、データの最小値。norm にインスタンスを指定した場合、vmin の指定は無視。
vmax 正規化時の最大値。 指定しない場合、データの最大値。norm にインスタンスを指定した場合、vmax の指定は無視。
alpha 透明度。0(透明)~1(不透明)の間の数値を指定。
linewidths 線の太さ。
edgecolors 線の色。

【基本的な散布図を作成する】

使用するデータは、seabornのライブラリの中から、iris(アヤメのサンプルデータ)を使用します。

import matplotlib.pyplot as plt
import seaborn as sns
import japanize_matplotlib
%matplotlib inline

iris = sns.load_dataset('iris')
iris.head()
sepal_lengthsepal_widthpetal_lengthpetal_widthspecies
05.13.51.40.2setosa
14.931.40.2setosa
24.73.21.30.2setosa
34.63.11.50.2setosa
453.61.40.2setosa

x軸とy軸にデータを指定して散布図を作成する | x, y

x軸にガクの長さ(sepal_length)、y軸にガクの幅(sepal_width)を指定して散布図を作成します。

x = iris['sepal_length']
x.head()
0    5.1
1    4.9
2    4.7
3    4.6
4    5.0
Name: sepal_length, dtype: float64
y = iris['sepal_width']
y.head()
0    3.5
1    3.0
2    3.2
3    3.1
4    3.6
Name: sepal_width, dtype: float64
# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(10,8))

plt.scatter(x ,y)

Image from Gyazo

【サイズ、色、不透明度、線の太さ、色を指定する】

サイズ、色、不透明度、線の太さ、色を指定して散布図を作成する

s, c, alpha, linewidths, edgecolors

# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(10,8))

plt.scatter(x ,y, s=200, c='pink', alpha=0.5, linewidths=2, edgecolors='red')

Image from Gyazo

ポイント

引数alphaを指定することで、データの重なる部分が分かりやすくなります。

マーカーを指定して散布図を作成する | marker

マーカーに星印(’*’)を指定してみます。

# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(10,8))

plt.scatter(x ,y, s=200, marker='*')

Image from Gyazo

ポイント

引数markerで指定できる種類は次のものがあります。

marker description
“.” point
“,” pixel
“o” circle
“v” triangle_down
“^” triangle_up
“<“ triangle_left
“>” triangle_right
“1” tri_down
“2” tri_up
“3” tri_left
“4” tri_right
“8” octagon
“s” square
“p” pentagon
“P” plus (filled)
“*” star
“h” hexagon1
“H” hexagon2
“+” plus
“x” x
“X” x (filled)
“D” diamond
“d” thin_diamond
” | vline
“_” hline
0 (TICKLEFT) tickleft
1 (TICKRIGHT) tickright
2 (TICKUP) tickup
3 (TICKDOWN) tickdown
4 (CARETLEFT) caretleft
5 (CARETRIGHT) caretright
6 (CARETUP) caretup
7 (CARETDOWN) caretdown
8 (CARETLEFTBASE) caretleft (centered at base)
9 (CARETRIGHTBASE) caretright (centered at base)
10 (CARETUPBASE) caretup (centered at base)
11 (CARETDOWNBASE) caretdown (centered at base)

【タイトル、ラベル、グリッド線を表示する】

グラフのタイトル、X 軸、Y 軸の名前 (ラベル)、グリッド線を表示してグラフを作成する

# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(10,8))

# タイトルを表示します。
plt.title('ガクの長さとガクの幅の散布図')

# X軸のラベルを表示します。
plt.xlabel('sepal_length')

# Y軸のラベルを表示します。
plt.ylabel('sepal_width')

# グリッドを表示します。
plt.grid(True)

plt.scatter(x ,y)

Image from Gyazo

【カラーマップを指定して、値に応じてマーカーを着色する】

引数sの値の大小に応じて、色の濃淡やグラデーションで表現することができます。
引数cにfloat型を指定した場合のみに使用することが出来ます。

カラーマップを指定して散布図を作成する | cmap

引数cにガクの長さ(変数x)を指定して、ガクの長さによって散布図の色にグラデーションをつけます。

# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(10,8))

# cにfloat型を指定
plt.scatter(x, y, c=x, cmap='Blues')

# カラーバーを表示
plt.colorbar()

Image from Gyazo

正規化における最大値 (8.0)、最小値 (2.0) を指定 | vmax, vmin

先ほどの散布図では、データの値が小さいほど、グラデーションが薄すぎて少し見にくくなっています。

引数vmaxvminに最大値と最小値を指定して、色の濃淡を調整します。

# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(10,8))

# cにfloat型を指定
plt.scatter(x, y, c=x, cmap='Blues', vmax=8.0, vmin=2.0)

# カラーバーを表示
plt.colorbar()

Image from Gyazo

ポイント

  • 右側のカラーバーの目盛がvmaxvminで指定した値に変わっています。
  • X軸とy軸に表示されている目盛の最小値と最大値に合わせると色の濃淡を調整しやすいと思います。

【さいごに】

今回は、Matplotlibのmatplotlib.pyplot.scatterメソッドの引数を紹介しました。

引数ccmapは少し慣れが必要だと思いますが、データの値によってグラデーションを表現することで綺麗なグラフを描画することが出来ます。この機会に、覚えてしまいましょう。

また、使用したCSVファイルやJupyter NotebookはGitHubに公開しています。
Jupyter Notebookは下記コマンドでダウンロードできるので、自由に使って是非練習してみてください。

$ curl https://raw.githubusercontent.com/nakachan-ing/python-references/master/Matplotlib%26Seaborn/matplotlib.pyplot.scatterの引数.ipynb -O
python-references/Matplotlib&Seaborn at master · nakachan-ing/python-references
Contribute to nakachan-ing/python-references development by creating an account on GitHub.
matplotlib.pyplot.scatter — Matplotlib 3.9.0 documentation

コメント

タイトルとURLをコピーしました