Tips

初心者向けにPythonのMatplotlibを使ってグラフを作成する方法を解説【figure,subplot,show,scatter,grid,set_title,setxlim,set_xlabel】

  • このエントリーをはてなブックマークに追加

「Pythonを使って初心者でもグラフを作成する方法があれば知りたい」
「Matplotlibを使ってグラフを作成しているけど軸の数値範囲を設定する方法がわからない」
「Matplotlibを使って複数のグラフを同時に表示する方法が知りたい」

本日はそんな方に向けてPythonのMatplotlibライブラリを使ったグラフの作成について解説していきます。

PythonのMatplotlibは、データ可視化のための強力なツールであり初心者からプロまで幅広いユーザーに利用されています。

本記事ではMatplotlibを使用してグラフを作成する方法を詳しく解説します。

Figureの作成からsubplotの配置、scatterプロットの描画、グリッドの追加、そしてタイトルや軸ラベルの設定まで、基本的な機能を網羅的に説明していきます。

これによりMatplotlibを使ってデータを視覚的に表現する方法を理解し、自分のプロジェクトや解析に活用できるようになるでしょう。

また動画もあるので必要に応じて活用してください。

https://youtu.be/LYYPDnld68g
https://youtu.be/ch5rahI0dpM
https://youtu.be/oQ1qTzt7caI

PythonでMatplotlibを使ってグラフを作成する方法

Matplotlibはサードパーティ製のライブラリなのでインストールしてからじゃないと使用できません。

pip install matplotlib

インストールが完了したらMatplotlibのpyplotというクラスをインポートします。

また名前が少々長いのでasを使って「plt」と省略して使うことが多いです。

import matplotlib.pyplot as plt

グラフを作成する基本の手順は以下のとおりです。

・画面を作成
・軸を作成
・データを点で配置
・グラフの表示

それぞれをコードにすると以下のようになります。

import matplotlib.pyplot as plt

# 画面を作成
fig = plt.figure()

# 軸を作成
ax1 = fig.add_subplot(1,1,1)

# データを点で配置
x = [0,1,2]
y = [0,1,2]
ax1.plot(x,y)

# グラフの表示
plt.show()

こちらを実行すると以下のように一次関数のグラフが作成できます。

ちなみにyの値をxの乗数にすることで二次関数になります。

import matplotlib.pyplot as plt
import numpy

x = numpy.linspace(0, 5, 100)
y = x ** 2

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.plot(x, y, "-")

plt.show()

もう一度、一次関数を例題にして解説をしていきますが、線を2本にしたいときはそれぞれのデータを用意してplotメソッドを実行すればOKです。

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

x1 = [0,8,16]
y1 = [0,8,16]
ax.plot(x1,y1)

x2 = [0,2,4]
y2 = [0,4,16]
ax.plot(x2,y2)

plt.show()

また値を見やすくするためにgridというメソッドで目盛をグラフに追加できます。

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

x1 = [0,8,16]
y1 = [0,8,16]
ax.plot(x1,y1)

x2 = [0,2,4]
y2 = [0,4,16]
ax.plot(x2,y2)

# ここを追加
ax.grid(True)

plt.show()

線を複数にするときは上記のように同じグラフに混在させる方法と、もう一つはグラフ自体を複数にする方法があります。

add_subplotメソッドが軸、つまりグラフの作成を担っています。

add_subplot(a,b,c)という3つの引数で、「画面をa:bに分割してc番目に軸を設定する」という意味になります。

import matplotlib.pyplot as plt

fig = plt.figure()

# figureを2:1に分割して1番目に軸を配置する
ax1 = fig.add_subplot(2,1,1)

# figureを2:1に分割して2番目に軸を配置する
ax2 = fig.add_subplot(2,1,2)

x1 = [0,1,2]
y1 = [0,1,2]
ax1.plot(x1,y1)

x2 = [1,5,10]
y2 = [3,3,3]
ax2.plot(x2,y2)

plt.show()

グラフを分割して増やしたときはset_titleというメソッドでタイトルをつけることが多いです。

import matplotlib.pyplot as plt

fig = plt.figure()

ax1 = fig.add_subplot(2,1,1)
# ここを追加
ax1.set_title("graph1")

ax2 = fig.add_subplot(2,1,2)
# ここを追加
ax1.set_title("graph2")

x1 = [0,1,2]
y1 = [0,1,2]
ax1.plot(x1,y1)

x2 = [1,5,10]
y2 = [3,3,3]
ax2.plot(x2,y2)

plt.show()

またグラフの軸の数値範囲を設定したいときはset_xlimとset_ylimというメソッドを使います。

set_xlimはx軸の範囲を決めるもので、引数はleftが最小値でrightが最大値になります。

set_ylimはy軸の範囲を決めるもので、引数はbottomが最小値でtopが最大値になります。

さらにset_xlabelでx軸のラベルを、set_ylabelでy軸のラベルも追加できます。

線のラベルはlegendというメソッドがあり、第一引数から順番に作成したラベル名を文字列で記載します。

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

x1 = [0,4,8,12,16,20]
y1 = [0,8,16,24,32,40]
ax.plot(x1,y1)

x2 = [0,2,4,6,8,10,12,14,16,18,20]
y2 = [0,2,4,6,8,10,12,14,16,18,20]
ax.plot(x2,y2)

# グリッド線をオンにする
ax.grid(True)
# x軸の範囲
ax.set_xlim(left=0, right=20)
# y軸の範囲
ax.set_ylim(bottom=0, top=40)
# x軸のラベル
ax.set_xlabel("speed")
# y軸のラベル
ax.set_ylabel("km")
# グラフのタイトル
ax.set_title("sample image")
# グラフのラベル
ax.legend(["f(x)=2x", "f(x)=x"])
plt.show()

PythonのMatplotlibで色んなパターンのグラフや図を作成する

前章ではシンプルな一次関数のグラフでしたがMatplotlibではいろんな種類のグラフを作成できます。

資料や論文など使用する場所によって見せ方を変えることはよくあるので色んなパターンを練習しておきましょう。

PythonのMatplotlibで散布図を作成する

例えば散布図を作成したいときはNumpyを追加でインストールします。

pip install numpy

続いてNumpyをインポートした上で、ランダムな数字を作成します。

Numpyで作成された乱数をMatplotlibのscatterというメソッドで散布図にすることができます。

import matplotlib.pyplot as plt
import numpy

x = numpy.random.rand(10)
y = numpy.random.rand(10)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

# xの値、yの値、点の大きさ、点の透明度、点の太さ、マーカーの形、マーカーの色
ax.scatter(x,y,s=100, alpha=1, linewidths=1, marker="+",c="#666")
plt.show()

PythonのMatplotlibで棒グラフを作成する方法

続いては棒グラフになります。

barというメソッドがあり、第一引数にxの値、第二引数にyの値、第三引数にwidthというキーワードで棒の太さ、第四引数にlinewidthというキーワードで枠線の太さ、第五引数にedgecolorというキーワードで枠線の色を設定します。

import matplotlib.pyplot as plt

label = ["a", "b", "c"]
x = ["J","F","M"]
y = [100,200,300]

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

# x軸、y軸、棒の太さ(1が基準)、枠線の太さ、枠線の色
ax.bar(x, y, width=0.4, linewidth=10, edgecolor="#eee")
plt.show()

PythonのMatplotlibで折れ線グラフを作成する方法

続いては折れ線グラフです。

plotという一次関数でも使用したメソッドを使うことで折れ線グラフが作成できます。

plotは第一引数にxの値、第二引数にyの値、第三引数にcというキーワードで線の色、第四引数にlinewidthというキーワードで線の太さ、第五引数にmarkerというキーワードでプロットの形を指定します。

import matplotlib.pyplot as plt

x = ["J","F","M","A"]
y = [100,150,80,120]

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

# x軸、y軸、線の形、線の色、線の太さ、点の形
ax.plot(x, y, "-", c="#666", linewidth=1, marker="+")

plt.show()

PythonのMatplotlibで円グラフを作成する方法

続いて円グラフの作成方法です。

円グラフはpieというメソッドを使用します。

第一引数に値、第二引数で値に対するラベル名、第三引数が値に対する色、第四引数にcounterclockというキーワードで値の並べる順番、第五引数にstartangleというキーワードで開始角度を指定します。

また円グラフは表示するエリアによって綺麗な正円にならず潰れた円形になることがあります。

それを防ぐためにaxisという補正メソッドを引数equalで実行することも併せて覚えておきましょう。

import matplotlib.pyplot as plt

label = ["AAA","BBB","CCC"]
x = [10,20,40]

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

# 値、ラベル、色、Trueで時計回り、開始角度
ax.pie(x, labels=label, colors=['red', 'blue', 'green'], counterclock=False, startangle=90)

# 表示補正
ax.axis("equal")

plt.show()

PythonのMatplotlibでヒストグラムを作成する方法

値の正規分布や偏りを確認するために使用されるヒストグラムも作成できます。

ヒストグラムは大量のデータが必要なので、今回はサンプルデータの用意にNumpyライブラリを使用します。

ヒストグラムはhistというメソッドがあり、第一引数に値、第二引数にbinsというキーワードで棒の数、第三引数にcolorというキーワードで棒の色、第四引数にecというキーワードで枠線の色を指定します。

pip install Numpy
import matplotlib.pyplot as plt
import numpy

# 平均値0, 標準偏差(ばらつき具合)10, 要素数100個
x = numpy.random.normal(0, 10, 100)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

# x, 分割の数、棒の色、枠線の色
ax.hist(x, bins=20, color="#666", ec="#000")

plt.show()

こちらの本を参考にして作成しました。
良ければこちらからどうぞ。

  • このエントリーをはてなブックマークに追加