Pythonで複数の散布図を重ねる方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonで複数の散布図を重ねる方法について現役エンジニアが解説しています。散布図とは縦軸と横軸に2つの項目の数値を対応させ、データ点をプロットした図のことです。散布図を描画するには、matplotlib.pyplotのscatter()メソッドを使います。重ねるには横軸の変数を統一します。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

Pythonで複数の散布図を重ねる方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonで複数の散布図を重ねる方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

目次

  1. 散布図とは
  2. 散布図を描画する方法
  3. 複数の散布図を重ねる方法
  4. 実際に実装してみよう
  5. まとめ

 

散布図とは

散布図とは、「縦軸と横軸に2つの項目の数値を対応させ、データ点をプロットした図」のことです。

と言ってもこの説明ではイマイチしっくりこない方が多いかと思います。百聞は一見に如かずなので、ここは実際の例をお見せします。

 

上のようなxとyの対応関係を表した図が散布図です。

皆さんにも普段から馴染みがあるのではないかと思います。上の図は適当に作ったものなので、特に何かの関係を表しているわけではないのですが、これで散布図のイメージを掴んでいただけたのではないでしょうか。

[PR] Pythonで挫折しない学習方法を動画で公開中

散布図を描画する方法

それでは次に散布図を描画する方法についてご説明します。

散布図を描画するには、matplotlib.pyplotのscatter()を用います。scatter()の引数には横軸のデータと縦軸のデータをそれぞれ与えます。また、必須ではないのですがマーカーのサイズや色、線の太さなどの指定も引数で可能です。

複数の散布図を重ねる方法

次は複数の散布図を重ねる方法についてです。複数の散布図を重ねるには、横軸の変数を統一してscatter()を使う必要があります。また、このときにcolorという引数に色を指定しておくと散布図が見やすくなります。例えば以下のようなイメージです。

plt.scatter(x, y1, label='y1', color='tomato')

plt.scatter(x, y2, label='y2', color='orange')

 

ちなみにですが、色の指定はredやblueなどの基本的な色だけでなく、aquaやoliveなどの指定もできます。オシャレな色の図が簡単にできるのでオススメです。

 

実際に実装してみよう

まずは先ほどの散布図を書いてみます。コードの概要は以下の通りです。

  1. 必要なライブラリのインポート
  2. データの準備
  3. 散布図を描く(同時にタイトルやラベルなども記載)
  4. 散布図を表示

 

import numpy as np

import matplotlib.pyplot as plt

x = np.arange(30)

y = []

for i in range(30):

   y.append(np.random.randn())

plt.scatter(x,y)

plt.title("SCATTER PLOT")

plt.xlabel("x")

plt.ylabel("y")

plt.show()

 

次に、散布図を重ねて描画します。ここでは横軸に国語の点数を、縦軸に数学と理科の点数を取って相関を確認してみましょう。先ほどとの主な違いはscatter()を2回用いる点です。

 

import numpy as np

import matplotlib.pyplot as plt

japanese = [90,55,72,68,87,73,42,100,55,32]

math = [82,67,80,62,90,81,30,98,40,29]

science = [95,74,85,70,100,92,50,100,62,53]

plt.scatter(japanese, math, label='math', color='aqua')

plt.scatter(japanese, science, label='science', color='olive')

plt.xlabel('japanese')

plt.ylabel("math & science")

plt.legend()

plt.show()

上のような散布図ができたかと思います。グラフが右肩上がりなので、国語と他の科目には相関がありそうですね。

まとめ

この記事ではPythonで複数の散布図を重ねる方法について解説しました。matplotlibを使いこなせると高度な数学的なグラフも一瞬で描けるようになります。是非使いこなせるようになりましょう。

監修してくれたメンター

柴山真沙希(しばやままさき)

大手IT企業などでエンジニアとして2年ほど勤務した後、個人事業主としてプログラミングスクール「エンペサール」を経営。子供から大人まで幅広い層を対象にプログラミングを教えている。

得意言語はPython, HTML, CSSで、機械学習やデータ分析、スクレイピングなどが得意。サッカー観戦や読書が趣味である。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、Pythonを使った人工知能(AI)や機械学習の基礎を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。