ここでは、PythonにおけるMatplotlibを用いた散布図を作成する方法について解説しています。
基本的な型
Axes.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None, plotnonfinite=False, data=None)
Axes.scatterの最低限の引数はx、yになります。
x,y | 入力データ(配列) |
s | makerのサイズ指定。デフォルトでは2。 |
c | makerの色設定。 |
maker | マーカーの指定。デフォルトでは’o’。指定できるマーカーの種類はこちらを参照下さい。 |
cmap | カラーマップの設定。 |
norm | 正規化の設定。色の設定(c)を0~1の間でスケーリングする。 |
vmin,vmax | 色の設定(c)をカラーマップ(cmap)にマップする際の最小値、最大値の設定。 |
alpha | 0(透明)から1(不透明)までのアルファブレンディング値。 |
linewidths | マーカーのエッジ幅の設定。 |
edgecolors | マーカーのエッジの色の設定。 |
plotnonfinite | 色の設定(c)におけるinf、-inf、またはnanを持つ点をプロットするかどうかの設定。 |
基本的な型は以上になります。他にもオプションとしてラベル設定等が可能です。
散布図作成
デフォルトの散布図
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#1---Data設定
x = np.random.rand(100)
y = np.random.rand(100)
#2---デフォルトの散布図を描画
plt.scatter(x, y)
plt.savefig("plot_sca1.png")
上記がプログラムになります。データは乱数を基にしています。散布図の作成は2の部分に着目して下さい。
xがx軸、yがy軸のデータになります。
DataFrame型でのデータ設定
DataFrame型でデータをプロットしたい場合は以下のようにすることで可能です。
data = {"x":x, "y":y}
plt.scatter("x", "y", data=data)
plt.savefig("plot_sca2.png")
出力結果はデフォルトと一緒なので省略します。
色の設定
#2---color設定
plt.scatter(x, y,c="r",edgecolor="b")
plt.savefig("plot_sca3.png")
マーカーの色を赤、マーカーのエッジの色を青に指定しています。
マーカーの設定
#2---マーカー設定
plt.scatter(x, y,marker="^")
plt.savefig("plot_sca4.png")
マーカーの種類を三角形に指定しています。指定できるマーカーの種類はこちらを参照下さい。
カラーマップ設定
#2---カラーマップ設定
value = np.random.rand(100)
plt.scatter(x, y,s=100, c=value, cmap='Greens')
plt.colorbar()#カラーバー取得
plt.savefig("plot_sca5.png")
マーカーのサイズを100、カラーをvalueで作成した乱数を基に設定、カラーマップの色を緑に設定。
「colorbar」でカラーバーを取得しています。
グリッド線の設定
#2---グリッド線設定
plt.scatter(x, y)
plt.grid(True)
plt.savefig("plot_sca6.png")
グリッド線を追加する場合はgrid()を呼び出してTrueとするだけです。
複数データ群のプロット設定
#2---複数データ群のプロット
l = np.random.rand(100)
m = np.random.rand(100)
plt.scatter(x, y)
plt.scatter(l,m)
plt.savefig("plot_sca7.png")
複数データをまとめてプロットしたい場合はscatterを回数分読み出すだけです。
凡例設定
#2---凡例設定
l = np.random.rand(100)
m = np.random.rand(100)
plt.scatter(x, y,label='data1')
plt.scatter(l,m,label='data2')
plt.legend(loc='upper left')
plt.savefig("plot_sca8.png")
凡例を設定する場合はlabelを指定した上で、legendで呼び出すことで可能です。locは凡例の位置を指定しています。ここでは左上に指定しています。
凡例の位置指定は以下の通りです。
upper right |
upper left |
lower left |
lower right |
right |
center left |
center right |
lower center |
upper center |
center |
最後に
「Matplotlib」を用いた散布図(Axes.scatter)を作成する方法についてまとめました。
適宜、参照下さい。