
始めに
前回に,『Python 機械学習のテストデータって何%にするのがベストなの?』という投稿をしました.
この投稿では,機械学習で使われるアルゴリズムごとの精度を比較しました.
そこで,今回は,この投稿の最後に表した複数のグラフを一度にプロットする方法をご紹介します.
簡単に出来るので,Pythonでグラフを描きたい場合はぜひ使ってみてください^^
(Udemy 『実践Pythonデータサイエンス』を参考,Jupiter notebookを使用)

Today’s Code
扱うデータ
今回は,前回と同様に,アイリス(iris)のデータを使いたいと思います.

読み込んだデータをデータフレームで表示すると,このようになります.
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
1 | 4.9 | 3.0 | 1.4 | 0.2 | setosa |
2 | 4.7 | 3.2 | 1.3 | 0.2 | setosa |
3 | 4.6 | 3.1 | 1.5 | 0.2 | setosa |
4 | 5.0 | 3.6 | 1.4 | 0.2 | setosa |
今回は,このデータの『 SEPAL_LENGTH 』,『 SEPAL_WIDTH 』,『 PETAL_LENGTH 』,『 PETAL_WIDTH 』についてプロットします.
それでは,コードを見てみましょう⤵
コード
#subplot()の間隔の調整
plt.subplots_adjust(wspace=0.4, hspace=0.6)
###sepal_length###
plt.subplot(2,2,1)
plt.plot(data.index, data["sepal_length"], color="red")
###petal_width###
plt.subplot(2,2,2)
plt.plot(data.index, data["sepal_width"], color="blue")
###petal_length###
plt.subplot(2,2,3)
plt.plot(data.index, data["petal_length"], color="green")
###petal_width###
plt.subplot(2,2,4)
plt.plot(data.index, data["petal_width"], color="purple")
このコードについて,ご説明します.
- plt.subplots_adjust(wspace=0.4, hspace=0.6) → グラフ同士の幅を調節
- plt.subplot(2,2,1) → 2行2列の1番目にプロット
- data.index → x軸にデータフレームのインデックスの値を指定
- data[“sepal_length”] → y軸に,それぞれのカラムの値を指定
ちなみに,インデックスの値とは,上のデータフレームの『0,1,2,3,4・・・』と表示されている部分を指します.
また,カラムの値とは, 『 SEPAL_LENGTH 』,『 SEPAL_WIDTH 』,『 PETAL_LENGTH 』,『 PETAL_WIDTH 』 の値のことを指します.
このコードを記述すると,以下のように4つのグラフがプロットされます.

この状態だと,どのグラフが何を表しているのかが分からないので,
タイトルとラベルを追加したいと思います.
#subplot()の間隔の調整
plt.subplots_adjust(wspace=0.4, hspace=0.6)
###sepal_length###
plt.subplot(2,2,1)
plt.plot(data.index, data["sepal_length"], color="red")
plt.title("sepal_length")
plt.xlabel("index")
plt.ylabel("features (cm)")
###petal_width###
plt.subplot(2,2,2)
plt.plot(data.index, data["sepal_width"], color="blue")
plt.title("sepal_width")
plt.xlabel("index")
plt.ylabel("features (cm)")
###petal_length###
plt.subplot(2,2,3)
plt.plot(data.index, data["petal_length"], color="green")
plt.title("petal_length")
plt.xlabel("index")
plt.ylabel("features (cm)")
###petal_width###
plt.subplot(2,2,4)
plt.plot(data.index, data["petal_width"], color="purple")
plt.title("petal_width")
plt.xlabel("index")
plt.ylabel("features (cm)")
以下の3つのコードを追加します.
- plt.title(“sepal_length”)
- plt.xlabel(“index”)
- plt.ylabel(“features (cm)”)
すると,このようにそれぞれのグラフに,タイトルとラベルが追加されました.

以下に,全体のコードを載せておきます.
全体のコード
ライブラリ
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("whitegrid")
コード
#irisのデータを読み込む
data = sns.load_dataset("iris")
#実行
data
#subplot()の間隔の調整
plt.subplots_adjust(wspace=0.4, hspace=0.6)
###sepal_length###
plt.subplot(2,2,1)
plt.plot(data.index, data["sepal_length"], color="red")
plt.title("sepal_length")
plt.xlabel("index")
plt.ylabel("features (cm)")
###petal_width###
plt.subplot(2,2,2)
plt.plot(data.index, data["sepal_width"], color="blue")
plt.title("sepal_width")
plt.xlabel("index")
plt.ylabel("features (cm)")
###petal_length###
plt.subplot(2,2,3)
plt.plot(data.index, data["petal_length"], color="green")
plt.title("petal_length")
plt.xlabel("index")
plt.ylabel("features (cm)")
###petal_width###
plt.subplot(2,2,4)
plt.plot(data.index, data["petal_width"], color="purple")
plt.title("petal_width")
plt.xlabel("index")
plt.ylabel("features (cm)")
終わりに
今回は,複数のグラフを一度にプロットする方法についてご紹介しました.
同時に表示することで,グラフの比較が簡単に行えるので,オススメです.
ぜひ,使ってみてください^^
それでは・・・