【初心者向け】Matplotlib入門 | Pythonを使ってデータを可視化してみよう!

はじめに

この章の一部に、統計用語が出て来ますが、用語に関してそれぞれしっかり理解したい方は、合わせて統計学編 (無料登録で読めます)もご確認ください。

このサイトは、Pythonや生成AIなどを学べるオンラインプログラミングスクール AI Academy Bootcampが運営しています。

Matplotlibとは

Matplotlib はPythonのグラフ描画のためのライブラリです。
Matplotlibを使うことで、グラフの描画やデータの可視化が簡単に行えます。
折れ線グラフ、ヒストグラムや散布図など表現可能です。
公式ギャラリーにて実際の例を見ることでより理解が深まりますので参考にして頂ければと思います。

Matplotlibのインストール

pipコマンドを用いたMatplotlibのインストールは下記のコマンドでインストール出来ます。
Macの方はターミナル、Windowsの方はコマンドプロンプト上で実行することでインストールが出来ます。

pip install matplotlib

Jupyter Notebookをお使いの方は、起動したNotebookのセルに、先頭に!マークをつけて実行することでインストールすることが出来ます。

!pip install matplotlib

Matplotlibの使い方

Matplotlibを使った最も簡単なグラフの書き方は次の通りです。
1. matplotlib.pyplotをインポートする
2. x軸の配列を作る
3. y軸の配列を作る
4. plot関数を使いプロットする
5. show関数を使いプロットしたグラフを描画する

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-5, 5, 0.1) #-5から5まで0.1区切りで配列を作る
y = np.sin(x) #配列xの値に関してそれぞれsin(x)を求めてy軸の配列を生成

plt.plot(x,y) # この場合のplot関数の第一引数xは、x軸に対応し、第二引数のyがy軸にあたります。
plt.show()

plot

折れ線グラフ

折れ線グラフは、数量の大きさを表す位置を線で結んだグラフです。
時間とともに変化する数量を示すときに利用します。

import matplotlib.pyplot as plt
data = [2, 4, 6, 3, 5, 8, 4, 5]
plt.plot(data)
plt.show()

# r--は赤の点線 b--は青の点線 g-- は緑の点線
plt.plot([1,2,3,4],[1,5,10,15],"r--") # 引数にオプションを渡さずに 色 に -- をつけると色 + 点線で表現できます
plt.show()

plot()

第一引数でx軸、第二引数でy軸の値を指定します。
デフォルトでは各点が線で繋がっていますが、第三引数の値を変更することでいろいろなスタイルのグラフにできます。
また、引数は3個で1セットとなっており、引数を続けて何個もプロットしたいデータを入れることで同じグラフ内にいくつも異なるスタイルでプロットすることもできます。
例)
“o” – 点
“^” – 三角の点
“s” – 四角の点
plot()とscatter()で利用可能なmarkerに関しての公式リファレンスです。
さらにオプションにはcolorも指定することができます。
例)
“red” もしくは “r” – 赤
“green” もしくは “g” – 緑
“blue” もしくは “b” – 青

公式リファレンス引用

import matplotlib.pyplot as plt
data = [20, 40, 60, 80 ]
y_data = [10, 5, 3, 1]
plt.plot(data, y_data, marker="o")
plt.savefig("graph.png")
plt.show()

また、plt.xlabel(“x”)でx軸のラベルを付けることが可能です。
同様に、plt.ylabel(“y”)でy軸のラベルを付けることが出来ます。
さらに、plt.savefig()で描画したグラフを画像として保存することが出来ます。
複数のグラフを描画させたい場合は、plot()の後に別のグラフのplot()を行い、show()を実行すれば可能です。

棒グラフ

棒グラフは、複数の独立した項目同士のデータを比較する時に利用するグラフです。
pyplotモジュールのbar()で作ることが出来ます。

import matplotlib.pyplot as plt
a = range(0, 7)
b = [55,21,61,98,85,52,99]
plt.bar(a, b)
# plt.barh(a, b) # 横棒の棒グラフ
plt.show()

import matplotlib.pyplot as plt
import numpy as np

# 棒グラフ
m = ("1", "2", "3", "4", "5", "6", "7","8","9","10","11","12")
y_pos = np.arange(len(m))
# 下記sales変数内の数値を変更して、色々実行してみてください。
sales = [10 ,18 ,32,54,65,96, 120, 140, 145,162, 188, 202]

plt.bar(y_pos, sales, alpha=0.5)
plt.ylabel("Usage")
plt.title("Sales Trends") # 売上推移
plt.show()

ちなみに横棒のグラフはplt.barh()で作ることが出来ます。

import matplotlib.pyplot as plt
a = range(0, 7)
b = [55,21,61,98,85,52,99]
plt.barh(a, b)
# plt.barh(a, b) # 横棒の棒グラフ
plt.show()

散布図

散布図は、横軸と縦軸にそれぞれ別の量をとり、データをプロットしたグラフです。
2つの量に関係があるかを見る時に利用するグラフです。
pyplotモジュールのscatter()を使用することで散布図を描画出来ます。

import matplotlib.pyplot as plt
x = [10, 51, 44, 23, 55, 95]
y = [5, 125, 2, 55, 19, 55]
plt.scatter(x,y)
plt.show()

scatterの第3引数にマーカーの形状(oや+)を設定できます。
また、色を変更するにはplot()の所でも説明しましたが、第3引数にcolor=”blue”のようにすることで色変換も可能です。

🎁ちょっとひと息 ! 業務や学習に役立つライブラリーをプレゼント !

オンラインプログラミングスクールのAI Academy Bootcamp LINE公式のライブラリーでは無料動画、講座、最新技術資料など、学習や業務に役立つ秀逸な教材や実践的なリソースを豊富に取り揃えています!毎週新しいコンテンツも更新中です。LINE友だち登録でプレゼントします。ぜひご活用ください!

LINE Libraryで人気 の動画です。

倍速で学ぶ!生成AIを活用したプログラミング勉強法】 生成AIを活用して効率的にプログラミングを学ぶ方法を解説しています。生成AIの基本的な仕組みや効果的な活用法、注意点についても詳しく説明。勉強法とともに生成AIそのものについても学べる内容となっています。ぜひご覧ください!

円グラフ

円グラフとは、丸い図形のグラフで、何らかの構成比率が扇形に分割され表されたグラフです。
pyplotモジュールのplt.pie()で円グラフを描画出来ます。
円グラフでは全体の中での構成比をみるときに利用します。

import matplotlib.pyplot as plt
labels = ["A", "B", "C", "D", "E"]
data = [54, 32, 18, 44, 29]
ex = [0.1, 0, 0, 0, 0]
# autopct="%1.1f%%"は小数点の表示桁数になります。1.1とすると1つ。1.2とすると2つになります。
# explodeオプションで1つめの要素を10%ずらしています。これにより少し目立たせることが可能です。
#counterclockオプションでFalseにするとリストの定義した順に表示になります。
# これがTrueになると反時計周りに円グラフの要素が構成されます。
plt.pie(data, explode=ex, labels=labels, autopct="%1.1f%%", counterclock=False)
plt.show()

labels = ["Python", "Ruby", "Java", "C++", "PHP"]
sizes  = [40, 12, 24, 16, 9]
colors =["navy", "yellow", "blue", "gold", "tomato"]
plt.pie(sizes, labels=labels, colors=colors)
plt.axis("equal") # この行を追加すると綺麗な円グラフが描けます。
plt.show()

ヒストグラム

ヒストグラムは、ある項目の散らばり具合(度数分布)を表す時に利用するグラフです。
ヒストグラムと棒グラフは似ているところがありますが、ヒストグラムには棒と棒の間に間隔がないという点とx軸はデータの区間で区切られており、連続したデータを示しているため、単純に複数の項目を比較する棒グラフと構成が違います。
hist()を使うことでヒストグラムを描画できます。
オプションには、binsやcolorなどがあり、棒の数を指定したり、棒の色を変えたりできます。

import matplotlib.pyplot as plt
import numpy as np

# 平均10、標準偏差10 の正規乱数を100件生成
x = np.random.normal(10, 10, 1000)

plt.hist(x)
# ヒストグラムを表示
plt.show()
# 引数にbins=数字でヒストグラムの棒の数を指定できます。
# plt.hist(x, bins=16)
# orientation="horizontal"を指定することで横棒として描画も可能です。

箱ひげ図

箱ひげ図 (box plot) は、データの分布や値のばらつきをわかりやすく表現するためのグラフです。
箱ひげ図は、最大値、最小値に加え、第一四分位数、第二四分位数、第三四分位数と呼ばれる四分位数の情報が含まれています。
描画するには、plt.boxplot()を利用します。

%matplotlib inline # Jupyter Notebookを利用している方のみ記述してください。
import matplotlib.pyplot as plt
import numpy as np

# ある10人の生徒の身長
math = [162, 168, 172, 181, 176, 168, 173, 175, 162, 169]
x = np.array(math)
plt.title('height')
plt.grid() # 横線ラインを入れることができます。

plt.boxplot(x)
plt.show()

"""
# 下記コードでも同様に描画可能です。

import matplotlib.pyplot as plt
# ある10人の生徒の身長
math = [162, 168, 172, 181, 176, 168, 173, 175, 162, 169]
# 箱ひげ図
fig, ax = plt.subplots()
bp = ax.boxplot(math)
plt.title('height')
plt.grid() # 横線ラインを入れることができます。
# 描画
plt.show()
"""

複数描画することもできます。 その際は、boxplot()の引数にタプルを利用します。

%matplotlib inline # Jupyter Notebookを利用している方のみ記述してください。
import matplotlib.pyplot as plt

# 数学の点数
math = [82, 75, 50, 73, 65, 95, 78, 93, 71, 83]
# 英語の点数
english = [77, 92, 62, 77, 64, 45, 28, 60, 37, 86]

# 点数のタプル
points = (math, english)

# 箱ひげ図
fig, ax = plt.subplots()


bp = ax.boxplot(points) # 複数指定する場合はタプル型で渡します。
ax.set_xticklabels(['math', 'english'])

plt.title('exam')
plt.grid() # 横線ラインを入れることができます。

# 描画
plt.show()

複数のグラフを描画する

複数のグラフを並べて配置するにはサブプロットに描画することで出来ます。
add_subplot関数を利用することで複数描画可能です。

まず、変数 = plt.figure()で図のインスタンス化 (無料登録後に読めます)を行います。
その後、add_subplot()することで実現可能です。
add_subplot関数に渡す引数に関してですが、add_subplot(行数, 列数, 番号) とします。

import matplotlib.pyplot as plt
x1, y1 = range(0, 5), [10,41, 44,29, 85]
x2, y2 = range(0, 5), [59,55,77,15,47]

fig = plt.figure()

# 1行2列の1番目
a1 = fig.add_subplot(1, 2, 1) # 第3引数の1は左側を意味しています
a1.bar(x1, y1)
a1.set_title("A")

a2 = fig.add_subplot(1, 2, 2) # 第3引数の2は右側を意味しています
a2.bar(x2, y2)
a2.set_title("B")

plt.show()

まとめ

この章では、Matplotlibでよく使うメソッドを見てきました。
Matplotlibは、グラフの描画やデータの可視化、折れ線グラフ、ヒストグラムや散布図など表現可能です。
手元のデータを可視化する時に必須のPythonライブラリですので使いこなせるようにしましょう。

演習問題

1 . NumPyやmathモジュールのsin()、cos()関数を使い、Sin波のグラフとCos波のグラフを描画してみてください。
NumPyなどのモジュールを使ってデータを作っていただいても他の方法でも構いません。

演習問題回答例

Pythonを効率よく学ぶには?

Matplotlibの解説について、いかがでしたでしょうか?

AI Academy Bootcamp ではAI・データサイエンス、機械学習の実践力を高める全4コース40時間以上の動画が見放題!AIの学習に必須のPythonの学習から始まり、データサイエンス・機械学習など、目的に応じた幅広い分野をカバーしています。

これまでプログラミング言語を学んだことがない方や、AIに興味のあるエンジニアの方まで幅広い方がスキルアップし、AIエンジニアやデータサイエンス、データアナリストから大規模言語モデルエンジニアを目指すコースもございます。

オススメ記事