matplotlib で散布図を描く

matplotlib で散布図を描くには、scatter を使う。点を線でつなぐには、plot を使う。

アウトプット

ポイント

scatter と plot

x, y の2項目の関係だけを見たい場合(例えば身長と体重の関係)は、scatter(x , y) とすると散布図を作れる。x, y の2項目に順番が付随している場合(どの順番でどこ(x, y)に行ったか)だと、plot を使い線で結ぶ。

# 左上 scatter を使う                                                                                                   
ax1 = fig.add_subplot(2, 2, 1)
ax1.set_title('scatter を使う')
ax1.scatter(np.random.randn(30)*10, np.random.randn(30)*5, color='k')

# 右上 plot を使う                                                                                                     
ax2 = fig.add_subplot(2, 2, 2)
ax2.set_title('plot を使う')
ax2.plot(np.random.randn(30).cumsum(), np.random.randn(30).cumsum(), color='k', linestyle='-')

配列(リスト)の利用

plot や scatter に渡すデータは、配列データ(リストデータ)になる。

# 左下 配列データを作って渡す                                                                                           
r = 0.1
x = []; y = []
for i in range(15):
    x.append(i)
    y.append((1 + r)**(-i))

ax3 = fig.add_subplot(2, 2, 3)
ax3.set_title('plot: y=1/(1+r)^x')
ax3.scatter(x, y, color='k')

点と点を線でつなぐ

点と点を線でつなぐには、scatter と plot を同じ subplot に用いれば良い。

# 右下                                                                                                                  
ax4 = fig.add_subplot(2, 2, 4)
ax4.set_title('scatter と plot で点をつなぐ')
ax4.scatter(x, y, color='k')
ax4.plot(x, y, color='k', linestyle='-')

コード全文

#!/usr/bin/env python3.8                                                                                                
# -*- coding: utf-8 -*-                                                                                                 
import matplotlib.pyplot as plt
import numpy as np

# 日本語フォント用                                                                                                      
from matplotlib import rcParams
rcParams['font.sans-serif'] = ['Noto Sans CJK JP']

# ウィンドウの作成                                                                                                      
fig = plt.figure()

# 左上 scatter を使う                                                                                                   
ax1 = fig.add_subplot(2, 2, 1)
ax1.set_title('scatter を使う')
ax1.scatter(np.random.randn(30)*10, np.random.randn(30)*5, color='k')

#  右上 plot を使う                                                                                                     
ax2 = fig.add_subplot(2, 2, 2)
ax2.set_title('plot を使う')
ax2.plot(np.random.randn(30).cumsum(), np.random.randn(30).cumsum(), color='k', linestyle='-')

# 左下 配列データを作って渡す                                                                                           
r = 0.1
x = []; y = []
for i in range(15):
    x.append(i)
    y.append((1 + r)**(-i))

ax3 = fig.add_subplot(2, 2, 3)
ax3.set_title('plot: y=1/(1+r)^x')
ax3.scatter(x, y, color='k')

# 右下                                                                                                                  
ax4 = fig.add_subplot(2, 2, 4)
ax4.set_title('scatter と plot で点をつなぐ')
ax4.scatter(x, y, color='k')
ax4.plot(x, y, color='k', linestyle='-')

# サブプロットの間のスペースを調整                                                                                      
plt.subplots_adjust(wspace=0.2, hspace=0.4)

# 表示                                                                                                                  
plt.show()

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)