【Matplotlib入門】サンプル集

Pythonモジュール「Matplotlib」でグラフを作成する方法とサンプルコードについて入門者向けにまとめました。

【Matplotlibとは】インストール方法

Matplotlibは、Pythonのグラッフィクスモジュールです。
短いコード量で効率よくグラフを描くことが出来ます。
(線グラフ、棒グラフ、図形などを描くことが出来ます)

Matplotlibのインストールはpipで行うのが簡単です。
■pipコマンドでインストール

pip install matplotlib

【2Dグラフ】線グラフ、散布図

Matplotlibで線グラフ・散布図を描いていきます。

線グラフ

Matplotlibで2次元の線グラフ、散布図を描くサンプルです。

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

# (x1, y1)のデータセットを作成
x1 = np.arange(-3.14, 3.14, 0.25)
y1 = np.sin(x1)

# (x2, y2)のデータセットを作成
x2 = np.linspace(0, 3, 10)  # xの値域:0-3、10分割
y2 = x2 + 1               # 直線の式

# プロット
plt.plot(x1, y1, "r-",lw=2, alpha=0.7, ms=2,label="(x1, y1)") # 線プロット
plt.plot(x2, y2, "bo",lw=2, alpha=0.7, ms=5,label="(x2, y2)") # 点プロット

# グラフ設定
plt.rcParams['font.family'] = 'Times New Roman' # 全体のフォント
plt.rcParams['font.size'] = 20                  # フォントサイズ
plt.rcParams['axes.linewidth'] = 1.0    # 軸の太さ 
plt.legend(loc=2,fontsize=20)           # 凡例の表示(2:位置は第二象限)
plt.title('Graph Title', fontsize=20)   # グラフタイトル
plt.xlabel('x', fontsize=20)            # x軸ラベル
plt.ylabel('y', fontsize=20)            # y軸ラベル
plt.xlim([-3, 3])                       # x軸範囲
plt.ylim([-2, 4])                       # y軸範囲
plt.tick_params(labelsize = 20)         # 軸ラベルの目盛りサイズ
plt.xticks(np.arange(-3.0, 4.0, 1.0))   # x軸の目盛りを引く場所を指定(無ければ自動で決まる)
plt.yticks(np.arange(-3.0, 4.0, 1.0))   # y軸の目盛りを引く場所を指定(無ければ自動で決まる)
plt.axis('scaled')                      # x, y軸のスケールを均等
plt.tight_layout()                      # ラベルがきれいに収まるよう表示
plt.grid()                              # グリッドの表示
plt.show()                              # グラフ表示

2次元グラフの作成
線グラフ 直線曲線線類・線幅・線色線色線幅マーカーサイズ
凡例 凡例点数文字サイズ
その他 日本語文字を扱う文字/数式の挿入

【棒グラフ】縦棒グラフ、横棒グラフ、ヒストグラム

Matplotlibで棒グラフを描いていきます。

縦棒グラフ

縦棒グラフを作成するには、barメソッドを利用します。

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [4, 5, 6, 7, 8]
label_x = ["A","B","C", "D", "E"]

# 中央寄せで棒グラフ作成
plt.bar(x, y, align="center")           
plt.xticks(x, label_x)  # X軸のラベル
plt.show()

縦棒グラフ(縦に重ねる)

縦棒グラフを作成するbarメソッドの引数bottomを用いることで、縦棒の底の座標を移動させることができます。
今回は、これを用いて複数データを縦に重ねて並べ、棒グラフで表示してみました。

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x1 = [1, 2, 3]
y1 = [4, 5, 6]

x2 = [1, 2, 3]
y2 = [1, 1, 1]

label_x = ['Result1', 'Result2', 'Result3']

# 1つ目の棒グラフ
plt.bar(x1, y1, color='b', width=0.3, label='Data1', align="center")
# 2つ目の棒グラフ
plt.bar(x2, y2, color='g', bottom=y1,width=0.3, label='Data2', align="center")

# 凡例
plt.legend(loc=2)

# X軸の目盛りを置換
plt.xticks(x1, label_x)
plt.show()

関連記事
1 【Matplotlib】縦棒グラフを複数並べて表示

縦棒グラフ(横に並べる)

Matplotlibモジュールには、縦棒グラフを作成するbarメソッドが用意されています。
今回は、これを用いて複数データを横に並べて棒グラフで表示してみました。

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x1 = [1, 2, 3]
y1 = [4, 5, 6]

x2 = [1.3, 2.3, 3.3]
y2 = [2, 4, 1]

label_x = ['Result1', 'Result2', 'Result3']

# 1つ目の棒グラフ
plt.bar(x1, y1, color='b', width=0.3, label='Data1', align="center")

# 2つ目の棒グラフ
plt.bar(x2, y2, color='g', width=0.3, label='Data2', align="center")

# 凡例
plt.legend(loc=2)

# X軸の目盛りを置換
plt.xticks([1.15, 2.15, 3.15], label_x)
plt.show()

関連記事
1 【Matplotlib】縦棒グラフを複数並べて表示

横棒グラフ

Matplotlibモジュールには、棒グラフを作成するbarhメソッドが用意されています。

【ドキュメント】matplotlib.pyplot.barh

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [4, 5, 6, 7, 8]
label_x = ["A","B","C", "D", "E"]

plt.barh(x, y, align="center")           # 中央寄せで棒グラフ作成
plt.yticks(x, label_x)  # X軸のラベル
plt.show()

関連記事
1 【Matplotlib】横棒グラフの表示

ヒストグラム

Matplotlibモジュールには、ヒストグラムを作成するhistメソッドが用意されています。

【書式】

matplotlib.pyplot.hist(list, bins=分割数, color=色, width=棒1本の幅)

公式ドキュメント

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

# 乱数を100個生成
x = np.random.randn(100)

# ヒストグラムの描画
plt.hist(x, bins=20, color='g', width=0.3)
plt.show()

関連記事
1 【Matplotlib】ヒストグラムの表示
円グラフ 円グラフ
散布図 散布図点色点種点サイズ
ベクトル場
図形 長方形三角形多角形ベクトル(矢印)
GUI部品 スライダー
軸ラベル 横軸を日付データ

【3次元】散布図、線グラフ

3次元グラフの作成
散布図 散布図
線グラフ 直線
対話モード(リアルタイム変化)
基本 リアルタイム描画描画速度キー入力(Windows)
画像 背景画像
関連記事