2020年5月5日火曜日

【matplotlib】散布図の作成と体裁の変更

 グラフ描画ライブラリmatplotlibを用いた散布図作成方法とグラフの体裁の変更方法を説明する。散布図を作成するにはmatplotlib.pyplot.scatterを使用する。

ライブラリmatplotlibを使う場合にはインポートが必要。matplotlib.pyplotは通常以下の書式でpltと略されインポートされる。

import matplotlib.pyplot as plt


1. 散布図作成

散布図を作成するには matplotlib.pyplot.scatter を用いる。書式は以下の通り。


matplotlib.pyplot.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)

引数 意味
x, y データ
s マーカーサイズ(オプション)。points**2
c マーカー色(オプション)
marker マーカーの形(オプション)。デフォルトは'o'
cmap カラーマップの指定(オプション)
norm カラーマップの正規化(オプション)
vmin, vmax カラーマップ正規化時の最大、最小値(オプション)
alpha マーカーの透明度(オプション)。0(透明)~1(不透明)
linewidths マーカー境界線太さ(オプション)
edgecolors マーカー境界線色(オプション)

引数 x y に各点のx、yの値を与えれば最も簡単な散布図が作成できる。

コード

import matplotlib.pyplot as plt

x = [2, 5, 7, 12]
y = [11, 24, 44, 70]

plt.scatter(x, y)
plt.show()

実行結果



2. グラフの体裁変更

グラフタイトル、x軸ラベル、y軸ラベルを表示するには matplotlib.pyplot に対して title xlabel ylabel を用いる。
また、目盛り線を表示するには grid True とする。

コード

import matplotlib.pyplot as plt

x = [2, 5, 7, 12]
y = [11, 24, 44, 70]

plt.scatter(x, y)

plt.title('scatter')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)

plt.show()

実行結果



プロットの色・サイズを変えるには scatter の引数 c s を使う。 s にはマーカーのpoint**2の値を与える。

コード

import matplotlib.pyplot as plt


x = [2, 5, 7, 12]
y = [11, 24, 44, 70]

plt.scatter(x, y, s=80, c='orange')

plt.show()

実行結果



複数系列をプロットする場合は scatter' を系列の数繰り返す。

コード

import matplotlib.pyplot as plt

x = [2, 5, 7, 12]
y = [11, 24, 44, 70]
x2 =  [2, 5, 7, 12]
y2 = [18, 43, 74, 170]

plt.scatter(x, y, s=80, c='orange')
plt.scatter(x2, y2, s=80, c='blue')

plt.show()

実行結果



各水準に名称を付ける場合は scatter の引数 label を与え matplotlib.pyplot オブジェクトに対して legend を実行する。

コード

import matplotlib.pyplot as plt

x = [2, 5, 7, 12]
y = [11, 24, 44, 70]
x2 =  [2, 5, 7, 12]
y2 = [18, 43, 74, 170]

plt.scatter(x, y, s=80, c='orange', label='A')
plt.scatter(x2, y2, s=80, c='blue', label='B')

plt.legend()
plt.show()

実行結果



3. リファレンス

matplotlib.pyplot.scatter

使用バージョン:Python 3.7.0 / matplotlib 3.2.1

0 件のコメント:

コメントを投稿