本文へスキップ
BecomeCoder

Pythonデータ分析コース · 第5章 matplotlib ― データを可視化する · レッスン19

散布図 ― scatter

ブラウザで完結

導入

散布図は、2つの数量の**関係(相関)**を見るためのグラフです。「勉強時間と点数」「身長と体重」のように、点をばらまいて傾向を探ります。

説明

plt.scatter(x, y) で、x と y の組を点として打ちます。

import matplotlib.pyplot as plt

hours = [1, 2, 3, 4, 5, 6, 7, 8]
scores = [40, 45, 55, 58, 70, 72, 85, 90]

plt.scatter(hours, scores, color="purple")
plt.title("Study Hours vs Score")
plt.xlabel("hours")
plt.ylabel("score")
plt.show()

点が右肩上がりに並んでいれば「勉強時間が長いほど点数が高い」という正の相関が読み取れます。

numpy を使うと、相関の強さを数値(相関係数)でも確認できます。

import numpy as np
import matplotlib.pyplot as plt

hours = np.array([1, 2, 3, 4, 5, 6, 7, 8])
scores = np.array([40, 45, 55, 58, 70, 72, 85, 90])

r = np.corrcoef(hours, scores)[0, 1]
print("相関係数:", round(r, 3))   # 1に近いほど強い正の相関

plt.scatter(hours, scores)
plt.title("Study Hours vs Score")
plt.show()

相関係数は −1〜1 の値で、1に近いほど「片方が増えるともう片方も増える」関係が強いことを表します。

やってみよう

scores の値をばらつかせる(例:[40, 80, 30, 90, 20])と、点の散らばりと相関係数がどう変わるか見てみましょう。

演習

x = [10, 20, 30, 40]y = [15, 25, 20, 40] の散布図を描いてください。タイトルは "scatter"

ヒント1を見る

plt.scatter([10,20,30,40], [15,25,20,40])plt.title("scatter")plt.show()

実際に動かしてみよう

下のエディタにPythonを書いて「実行」を押すと、numpy・pandas・matplotlib が使える本物のPython(Pyodide)で出力とグラフが表示されます。初回だけ読み込みに少し時間がかかります。本文の例をそのまま試したり、書き換えたりしてみましょう(グラフ内の文字は日本語だと表示が崩れるため英字で書きます)。

Python — ライブラリ付きで実行(Pyodide)

numpy / pandas / matplotlib が使える本物のPython(Pyodide)を読み込みます。初回のみ読み込みに少し時間がかかります(以降はブラウザにキャッシュされます)。
スクロールして表示された時点でも自動で読み込まれます。