Menu
CoddyTech

散布図

CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 21/60。

10種類の観葉植物について、1日の日照時間と、それぞれの成長量を示します。線で結ぶと、もつれた状態になります。点で示すと、パターンが見えてきます。

同じ10種類の植物を示す2つのグラフ。横軸は日照時間、縦軸は成長量。左側では、plt.plot が植物を結び、ジグザグにもつれた線になっている。右側では、plt.scatter が右上がりの点を示している

plt.scatter(x, y)は、線を引かずに各ペアにつき1つの点を描画します。

sun = [2, 6, 3, 8, 5, 1, 7, 4, 6, 3]
growth = [4, 10, 7, 12, 6, 2, 9, 8, 7, 3]
plt.scatter(sun, growth)
plt.xlabel("Sun (hours a day)")
plt.ylabel("Growth (cm)")
plt.show()

日光が多いほど、成長も増えます。散布図は、別々のサンプルについての2つの測定値がどのように関連しているかを示します。モデルが一方からもう一方を予測する前に、まずその関係を確認します。

曜日のように順序のある値にも、plt.plotを使います。

challenge icon

チャレンジ

中級

釣り人は、釣れた順に各魚を記録しました。1行に1匹ずつ、長さ(cm)、次に重さ(g)を記録しています。最初のコードでは plt.plot でそれらをつないでいるため、線がジグザグになり、パターンが見えにくくなっています。

  1. 魚をそれぞれ独立した点として描画します。横軸に長さ、縦軸に重さをとります。
  2. 線は一切表示しません。
  3. タイトル、ラベル、plt.show() はそのままにします。

別の釣行で作成した次のグラフのようになるはずです。

タイトルがFish Catchの散布図。18 cm・90 gから42 cm・980 gまで上昇する9個の点があり、線はない

プログラムは何も出力しません。Coddyが出力欄でグラフの説明を表示します。

自分で試してみよう

import numpy as np
import matplotlib.pyplot as plt

# 各行は釣れた順に魚1匹を表し、長さ (cm)、重さ (g) の順に並んでいます
fish = np.array([[22, 180], [30, 390], [25, 250], [35, 620],
                 [28, 330], [40, 870], [19, 120], [33, 510]])

# 下のグラフを修正してください
plt.plot(fish[:, 0], fish[:, 1])

# 以下の行は変更しないでください
plt.title("Fish Catch")
plt.xlabel("Length (cm)")
plt.ylabel("Weight (g)")
plt.show()
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

データとプロットのすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ