
Matplotlibとは
Matplotlibは、プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリである。
Matplotlibを使うと、計算結果として得られたNumPyのデータをグラフにして可視化することができます。Pythonで大規模なデータ分析や機械学習を行う際には必ずお世話になるライブラリです。
Matplotlibでは、グラフを「折れ線グラフ」「ヒストグラム」「散布図」「3Dグラフ」などで描画できます。グラフは各種画像形式で保存できます。
Matplotlibはフリーかつオープンソースのライブラリです。
インストール
pipを使ってインストールします。
$ pip install matplotlib
Matplotlibの使い方
matplotlibパッケージをインポートします。また、matplotlibはnumpyとともに用いられることが多いので、ここでもnumpyのデータを描画していきます。
matplotlib.pyplot
がグラフ描画の為のモジュールですので、これをインポートします。名前を「plt」と付けるのが一般的なのでこれに倣います。
あとはデータをプロットして表示します。実行するとグラフが表示されます。2次関数のグラフです。
import numpy as np
from matplotlib import pyplot as plt # グラフ描画の為のモジュール
# プロットするデータ(配列)
x = np.linspace(-10, 10, endpoint=True)
y = x**2
# 横軸x, 縦軸y をプロット
plt.plot(x, y)
plt.show()
以下にさまざまなグラフの描画例を作成しました。グラフ個別の細かい設定等は別記事でまとめます。
折れ線グラフ(line graph)
折れ線グラフは plt.plot
でプロットする x, y の値をそれぞれ設定します。
import numpy as np
from matplotlib import pyplot as plt
x = [1, 2, 3, 4, 5, 6]
y = [100, 250, 200, 300, 310, 200]
plt.plot(x, y)
plt.show()
折れ線グラフですが、プロットされる間隔が狭まれば曲線のように描画できます。以下はsin関数です。プロットされているのは50個の点です。
import numpy as np
from matplotlib import pyplot as plt
x = np.linspace(0, 2*np.pi) # 0から2πまでの範囲
y = np.sin(x)
plt.plot(x, y)
plt.show()
棒グラフ
Matplotlibには matplotlib.pyplot.bar
という棒グラフ描画用の関数が用意されています。これを使うと棒グラフが描画できます。
引数で縦軸横軸の値をそれぞれ設定します。
import numpy as np
from matplotlib import pyplot as plt
left = np.array([1, 2, 3, 4, 5]) # 横軸の値
height = np.array([100, 200, 300, 400, 500]) # 縦軸の値(棒の高さ)
plt.bar(left, height)
plt.show()
散布図
matplotlib.pyplot.scatter
という散布図描画用の関数を使って散布図を描画することができます。
以下はランダムな(x, y)を生成し、散布図を描画しています。
import numpy as np
from matplotlib import pyplot as plt
# 乱数を生成
x = np.random.rand(100)
y = np.random.rand(100)
# 散布図を描画
plt.scatter(x, y)
plt.show()
ヒストグラム
matplotlib.pyplot.hist
というヒストグラム描画用の関数を使ってヒストグラムを描画することができます。
import numpy as np
from matplotlib import pyplot as plt
# 正規乱数を3000個生成
x = np.random.normal(size=3000)
# ヒストグラム描画(ビンの数30)
plt.hist(x, bins=30)
plt.show()
3Dグラフ
mpl_toolkit.mplot3d
から Axes3D
をインポートしておくと、3Dグラフも描画できます。
numpy.meshgrid
で2次元のメッシュを作成してそれをプロットします。
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
x = np.arange(-25, 25)
y = np.arange(-25, 25)
X, Y = np.meshgrid(x,y)
Z = X**2 + Y**2
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_wireframe(X, Y, Z)
plt.show()
3次元散布図
3次元グラフだけでなく、3次元散布図も描画できます。
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
# 乱数を生成
x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)
# 3次元にプロット
fig = plt.figure()
ax = Axes3D(fig)
ax.plot(x, y, z, "o")
# 描画
plt.show()
画像の保存
生成される画像は [Save the figure] ボタンから保存できます。png, pdf, svg などの形式で保存できます。
まとめ
- Matplotlib は、Pythonのデータ可視化用ライブラリ。
- 様々なグラフで可視化でき、生成したグラフは画像形式で保存できる。
- NumPyのデータなどを可視化するのに歳でkなライブラリ。
以上。