この記事では、matplotlib.pyplot
モジュールを使用してグラフを作成する方法をまとめています。
matplotlib
には2つのグラフ作成方針があります。
pyplot
モジュールを使用(pltメソッド)- グラフ、グラフ要素のオブジェクトを生成(オブジェクト指向)
オブジェクト指向では細かな設定ができますが、コードが複雑になってしまうことも…。
一方、pyplot
ではオブジェクトを意識せず、手軽に手早く簡単にグラフ作成することができます。
今回はpyplot
モジュールでグラフを作成する方法を解説します。
- pyplotでグラフを描く基本手順
- pyplotモジュールの読み込み
- 基本的なpyplotモジュール関数まとめ
- グラフ要素の追加・変更
- グラフの保存方法:plt.savefig()
- オススメ|matplotlibとデータ分析の勉強方法
- 【参考】
plt.subplots()
で始めるオブジェクト指向のグラフ描画は、次の記事で解説しています。

pyplotでグラフを描く基本手順
pyplot
でグラフを描く基本の流れは次の通りです。
pyplot
モジュールのインポートplt.plot()
関数でグラフを描画- 必要に応じて、
plt.XXX()
関数でグラフ内各要素の追加設定
ある程度複雑なグラフを描くときも、基本はこの流れです。
それぞれの手順を順番に確認していきましょう。
pyplotモジュールの読み込み
pyplot
はplt
という名前でインポートするのが慣例です。
import matplotlib.pyplot as plt
インポート後は、各操作に応じたplt.XXX()
形式の関数を実行して、グラフを描いていきます。
以下では、基本的なplt.XXX()
関数について詳しく解説していきます。
基本的なpyplotモジュール関数まとめ
pyplot
でグラフ描画する場合は、plt.plot()
を中心にplt.XXX()
という関数を使用します。
次の表に基本的なplt.XXX()
関数をまとめたので、どんな関数があるのかチェックしてみましょう。
グラフ操作 | 関数名 | コメント |
---|---|---|
グラフ作成 | plt.plot(x, y) |
x : x座標の値をリストなどy : y座標の値のリストなど |
グラフ作成 ※簡易スタイル変更あり |
plt.plot(x, y, fmt) |
fmt : 既定文字列で次の要素を指定
|
タイトル追加 | plt.title("タイトル名") |
グラフ上部に"タイトル名" を表示 |
軸ラベル追加 | plt.xlabel("x軸ラベル名") plt.ylabel("y軸ラベル名") |
x軸, y軸に"ラベル名" をそれぞれ表示 |
軸の範囲変更 | plt.xlim(x軸最小値, x軸最大値) plt.ylim(y軸最小値, y軸最大値) |
x軸, y軸の最大値・最小値を変更 |
凡例の表示 | plt.legend() |
凡例を表示 |
グラフの保存 | plt.savefig("保存名") |
"保存名" で保存※ "フォルダ名/保存名" も可能 |
この表のplt.XXX()
関数を覚えれば、ある程度基本的なグラフが描けるようになってきます。
以下では、これらの関数を順番にわかりやすく解説していきます!
グラフ作成の基本手順:plt.plot(x, y)
pyplot
の最も基本的な関数が、plt.plot()
です。
pyplot.plot(x, y)
- デフォルト:
(x, y)
に応じた折れ線グラフを出力 - 設定変更で簡単な散布図にすることも可能
- デフォルト:
このときx
, y
は次のように準備します。
引数 | 内容 | 型 | 例)y = 2*x のグラフの場合 |
---|---|---|---|
x |
各プロットのxの値 | Array_like([リスト]やndarrayなど) |
x=[0, 1, 2, 3, …] |
y |
各プロットのyの値 | Array_like([リスト]やndarrayなど) |
y=[0, 2, 4, 6, …] |
簡単な例として[-5, 5]
の範囲でy = x**3
のグラフを作成します。
import numpy as np
import matplotlib.pyplot as plt
# プロット範囲のxを用意
x = np.arange(-5,6)
# x = array([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5])
# xに対応するyの値を用意
y = x**3
# y = array([-125, -64, -27, -8, -1, 0, 1, 8, 27, 64, 125])
# pyplot.plot(x, y)でプロット作成
plt.plot(x, y)
# plt.show()で画面に表示(Jupyter Notebookの場合は不要)
plt.show()
次のようなグラフが作成されます。
簡単にグラフを作成することができましたね。
- 【参考】
NumPy
のndarray
の生成方法については、次の記事で解説しています。

グラフは(x, y)
のデータ点をもとに作成されます。
そのため、上の例のようにx
の間隔が粗いとグラフがカクカクしてしまいます。
x
の間隔を細かくとって、滑らかなグラフを作成します。
# プロット範囲のxを用意
x = np.linspace(-5,5) # xを-5から5で50等分した配列を生成
# x = array([-5, -4.79591837 -4.59183673,...,4.79591837 5.])
# xに対応するyの値を用意
y = x**3
# array([-1.25000000e+02, -1.10310117e+02,...,1.10310117e+02, 1.25000000e+02])
# pyplot.plot(x, y)でプロット作成
plt.plot(x, y)
# plt.show()で画面に表示
plt.show()
np.linspace()
は、区間を当分割した配列を作成するので、pyplot()
との相性が良いです。
詳しくは、次の記事を参考にして下しさい。

複数系列のグラフを描画
複数系列のグラフを作成したい場合は、plt.plot()
を繰り返し実行すればOKです。
繰り返した回数だけ、プロットが追加されます。
# プロット範囲のxを用意
x = np.linspace(-5,5)
# x = array([-5, -4.79591837 -4.59183673,...,4.79591837 5.])
# xに対応するy, y2の値を用意
y = x**3
y2= -x**3
# pyplot.plot(x, y)でプロット作成
plt.plot(x, y)
plt.plot(x, y2)
同じグラフの中にプロットせず、複数のグラフを縦や横に並べる場合は、サブプロットを作成します。
サブプロットの作成方法については、次の記事で詳しく解説しています。

グラフのスタイル変更:plt.plot(x, y, fmt)
次にグラフのスタイル変更方法を紹介します。
最も手軽なスタイル変更方法は、第三引数としてフォーマット文字列fmt
を使用する方法です。
pyplot(x, y, fmt)
fmt = '[marker][line][color]'
[marker][line][color]
には、それぞれ設定内容に応じた文字を入力します。
fmt 内の内容 |
設定内容 | 設定例 |
---|---|---|
[marker] |
プロットの種類 |
|
[line] |
線の種類 |
|
[color] |
グラフの色 |
|
簡単な例として、赤破線(fmt=r--
)、青星型プロット(fmt=b*
)のグラフを作成してみます。
# プロット範囲のxを用意
x1 = np.linspace(-5,5)
x2 = np.linspace(-4,6)
# xに対応するyの値を用意
y1 = x1**2
y2 = (x2-1)**2
# pyplot.plot(x, y)でプロット作成
plt.plot(x1, y1, "r--")
plt.plot(x2, y2, "b*")
# plt.show()で画面に表示
plt.show()
簡単にスタイル変更ができましたね。
以下で、fmt
に設定できる主要なプロットの種類、線の種類、色の種類を紹介します。
プロットの種類:[marker]
指定できるプロットの種類は次の表の通りです
プロットの種類 | [marker] |
プロットの表示例 |
---|---|---|
丸(中) | '.' |
![]() |
丸(小) | ',' |
![]() |
丸(大) | 'o' |
![]() |
下向き三角 | 'v' |
![]() |
上向き三角 | '^' |
![]() |
四角 | 's' |
![]() |
五角形 | 'p' |
![]() |
星型 | '*' |
![]() |
ひし形 | 'D' |
![]() |
ひし形(細) | 'd' |
![]() |
plt.plot()
で実際にグラフのプロットの種類を変更した例を見てみましょう。
# マーカーの設定
marker_list =['.', ',', 'o', 'v', '^', '<', '>', 's', 'p', '*', 'D', 'd']
for i, marker in enumerate(marker_list):
x = np.linspace(0, 2*np.pi, num=10)
y = np.sin(x)+ i
plt.plot(x, y, marker,label=marker)
# 凡例の出力
plt.legend(marker_list,bbox_to_anchor=(1, 1))
plt.show()
線の種類:[line]
指定できる線の種類は次の表の通りです
プロットの種類 | [line] |
線の表示例 |
---|---|---|
実線 | '-' |
![]() |
破線 | '-' |
![]() |
一点鎖線 | '-.' |
![]() |
点線 | ':' |
![]() |
plt.plot()
で実際にグラフの線の種類を変更した例を見てみましょう。
# 線の設定
line_list =['-', '--', '-.', ':']
for i, line in enumerate(line_list):
x = np.linspace(0, 2*np.pi)
y = np.sin(x)+ i
plt.plot(x, y, line,label=line)
# 凡例の出力
plt.legend(line_list,bbox_to_anchor=(1, 1))
plt.show()
色の種類:[color]
fmt
で指定できる線の色は次の表の通りです
プロットの種類 | [color] |
色の表示例 |
---|---|---|
青 | 'b' |
![]() |
緑 | 'g' |
![]() |
赤 | 'r' |
![]() |
シアン | 'c' |
![]() |
マゼンタ | 'm' |
![]() |
黄色 | 'y' |
![]() |
黒 | 'k' |
![]() |
白 | 'w' |
![]() |
plt.plot()
で実際にグラフの色を変更した例を見てみましょう。
color_list =['b', 'g', 'r', 'c', 'm', 'y', 'k', 'w']
for i, color in enumerate(color_list):
x = np.linspace(0, 2*np.pi)
y = np.sin(x)+ i
plt.plot(x, y, color,label=line)
# 凡例の出力
plt.legend(color_list,bbox_to_anchor=(1, 1))
plt.show()
- 【参考】色の設定は、キーワード引数
color
を使用するとより詳細に設定することも可能です。

グラフ要素の追加・変更
グラフの主要な要素の追加・変更方法について解説します。
グラフ操作 | 関数名 | コメント |
---|---|---|
タイトル追加 | plt.title("タイトル名") |
グラフ上部に"タイトル名" を表示 |
軸ラベル追加 | plt.xlabel("x軸ラベル名") plt.ylabel("y軸ラベル名") |
x軸, y軸に"ラベル名" をそれぞれ表示 |
軸の範囲変更 | plt.xlim(x軸最小値, x軸最大値) plt.ylim(y軸最小値, y軸最大値) |
x軸, y軸の最大値・最小値を変更 |
凡例の表示 | plt.legend() |
凡例を表示 |
以下で、それぞれ解説していきます。
グラフタイトルの追加:plt.title()
グラフタイトルは、次の関数で設定します。
- グラフタイトル:
plt.title("title name")
実際に設定例を見てみましょう。
# プロット範囲のxを用意
x = np.linspace(-5,5)
# xに対応するyの値を用意
y = x**3
# pyplot.plot(x, y)でプロット作成
plt.plot(x, y)
plt.title("cubic curve")
軸ラベルの追加: plt.xlabel(), plt.ylabel()
軸ラベルは次の関数で設定します。
- x軸ラベル:
plt.xlabel("x軸ラベル名")
- y軸ラベル:
plt.ylabel("y軸ラベル名")
実際に設定例を見てみましょう。
# プロット範囲のxを用意
x = np.linspace(-5,5)
# xに対応するyの値を用意
y = x**3
# pyplot.plot(x, y)でプロット作成
plt.plot(x, y)
plt.title("cubic curve")
plt.xlabel("label name of x axis")
plt.ylabel("label name of y axis")
# plt.show()で画面に表示
plt.show()
タイトルや軸ラベルになどに日本語を使いたい場合は、特別な設定が必要です。
設定方法については次の記事を参考にしてください。

軸の範囲の変更:plt.xlim(), plt.ylim()
軸の範囲は次の関数で設定します。
plt.xlim(xmin, xmax)
plt.ylim(ymin, ymax)
次の例で、x軸とy軸の範囲を設定してみます。
# プロット範囲のxを用意
x = np.linspace(-5,5)
# xに対応するyの値を用意
y = x**3
# pyplot.plot(x, y)でプロット作成
plt.plot(x, y)
plt.xlim(-2, 2)
plt.ylim(-10,10)
# plt.show()で画面に表示
plt.show()
軸の範囲を変更すると、自動で軸目盛が振りなおされます。
軸周りの設定は、次の記事で詳しく解説しているので、参考にしてください。

凡例の追加:plt.legend()
凡例を作成するには、次の手順を踏みます。
- プロット時にラベル名指定:
plt.plot(x, y, label="label name")
- 凡例の表示:
plt.legend()
を実行
plt.legend()
を実行すると、label
をもとに凡例が自動生成されます。
次の例では、sinカーブとcosカーブを描いて、凡例を表示しています。
# プロット範囲のx, 対応するyを用意
x = np.linspace(0, 2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
# # pyplot.plot(x, y)でプロット作成
plt.plot(x, y1, label="sin curve")
plt.plot(x, y2, label="cos curve")
# 凡例の出力
plt.legend()
# plt.show()で画面に表示
# plt.show()
デフォルトでは凡例の位置は自動で設定されます。
plt.legend()
の引数によって、凡例の位置を調整することができます。
- 右側:
loc = "upper left", bbox_to_anchor=(1, 1)
- 上側:
loc="center", bbox_to_anchor=(0.5, 1.05), ncol=ラベル数
sinカーブ、cosカーブのグラフを例に凡例の位置を変更してみます。
plt.legend(loc = "upper left", bbox_to_anchor=(1, 1))
plt.show()
plt.legend(loc="center", bbox_to_anchor=(0.5, 1.05), ncol=2)
plt.show()
- 【参考】凡例の設定については、次の記事で詳しく解説しているので参考にしてください。

グラフの保存方法:plt.savefig()
グラフを保存する場合、plt.savefig()
を使用します
plt.savefig(ファイル名)
:カレントフォルダに保存plt.savefig(保存先のパス)
:指定したフォルダに保存
デフォルトでは、pingファイル形式で保存されます。
pict_name = "01_pyplot"
plt.savefig(pict_name)
# カレントフォルダに01_pyplot.pngファイルが保存される
from pathlib2 import Path
root = Path(r"C:\Users\YutaKa")
pict_name = "01_pyplot例"
plt.savefig(root / pict_name)
# C:\Users\YutaKaに01_pyplot.pngファイルが保存される
グラフの保存はfigureオブジェクトを使用しても可能です。
詳しくは次の記事を参考にしてください。

オススメ|matplotlibとデータ分析の勉強方法
今回は、Matplotlib
の軸・目盛り・目盛り線の設定について基本的なものを解説しました。
matplotlib
は奥の深いモジュールですが、なかなかわかりにくい部分もあります…。
そこで、グラフの作成方法、種類変更、凡例、タイトルの設定など網羅的にわかりやすく整理した記事を作りました。ぜひ参考にしてみてください。

また、データ分析初心者の方にはこちらの記事もおススメです。
私がこれまで勉強してきた経験をもとに考えたおススメの勉強本の紹介記事です。
何から始めて、どうやってレベルアップしていけばいいのか、初心者の方にぜひおススメしたい本を紹介しました。