サイトマップ

Matplotlibによるグラフ作成 第4回

Matplotlibによるグラフ作成 第4回

PythonのMatplotlibを使用した基本的なグラフ作成方法を紹介する
今回は、分布を表すグラフとして散布図を紹介する
また、ヒストグラムを簡易化して比較しやすくするBoxプロットとViolinプロットも紹介する

サンプルデータ生成

1次関数と2次関数の分布を用意する

import matplotlib.pyplot as plt
import numpy as np

data_x = []
data_y1 = []
data_y2 = []
for i in range(-10, 11):
    data_x += [i]
    data_y1 += [i * 5 + 20 + np.random.normal(0, 5)]
    data_y2 += [i**2 + np.random.normal(0, 5)]

散布図

fig = plt.figure(figsize=(6, 5))
ax = fig.add_subplot(111)

ax.scatter(data_x, data_y1)
ax.scatter(data_x, data_y2)

ax.grid()
fig.tight_layout()

散布図:カラーとサイズ

import matplotlib.cm as cm

fig = plt.figure(figsize=(6, 5))
ax = fig.add_subplot(111)

sc = ax.scatter(
    data_x, data_y1,
    s=np.abs(data_y2), c=data_y2,
    cmap=cm.jet, vmin=-100, vmax=100,
    marker='o'
)
ax.grid()

fig.colorbar(sc)
fig.tight_layout()

サンプルデータ生成2

2つの確率分布を用意する

import matplotlib.pyplot as plt
import numpy as np

mean1  = 10
sigma1 = 5
N1     = 1000
data1 = np.random.normal(mean1, sigma1, N1)

mean2  = 40
sigma2 = 10
N2     = 1000
data2 = np.random.normal(mean2, sigma2, N2)

Boxプロット

箱ひげ図、とも呼ばれる

fig = plt.figure(figsize=(6, 5))
ax = fig.add_subplot(111)

ax.boxplot([data1, data2])

ax.grid()
fig.tight_layout()

Violinプロット

fig = plt.figure(figsize=(6, 5))
ax = fig.add_subplot(111)

ax.violinplot([data1, data2])

ax.grid()
fig.tight_layout()