python

【python】Matplotlib

Matplotlibとは?

データの可視化方法を見ていきます。

import matplotlib.pyplot as plt 
import numpy 

x = numpy.linspace(-numpy.pi * 2, numpy.pi * 2, 1024, endpoint=True) 
y_sin = numpy.sin(x) 
plt.plot(x, y_sin) 
plt.show()

描画スタイルの変更 グラフサイズを変更する

pyplot.figure() 関数にパラメータ figsize に x, y のサイズをインチで与えます。

# グラフサイズを変更する。単位はインチ 
from matplotlib import pyplot 
import numpy 
x = numpy.linspace(-numpy.pi * 2, numpy.pi * 2, 1024, endpoint=True) 
y_sin = numpy.sin(x) 
y_cos = numpy.cos(x) 
pyplot.figure(figsize=(11, 7)) 
pyplot.plot(x, y_sin) 
pyplot.plot(x, y_cos) 
pyplot.show()

線色と線幅の変更 線の色や幅を変更する

pyplot.plot() 関数のパラメータに設定します。線の色は color パラメータ、線の幅は linewidth パラメータに与えます。

from matplotlib import pyplot 
import numpy
x = numpy.linspace(-numpy.pi * 2, numpy.pi * 2, 1024, endpoint=True) 
y_sin = numpy.sin(x) 
y_cos = numpy.cos(x) 
pyplot.figure(figsize=(11, 7)) 
# pyplot.plot(x, y_sin) 
# pyplot.plot(x, y_cos) 
pyplot.plot(x, y_sin, color='blue', linewidth=2.0) 
pyplot.plot(x, y_cos, color='red', linewidth=2.0) 
pyplot.show()

x軸、y軸を設定する

from matplotlib import pyplot 
import numpy 

x = numpy.linspace(-numpy.pi * 2, numpy.pi * 2, 1024, endpoint=True) 
y_sin = numpy.sin(x) 
y_cos = numpy.cos(x) 
pyplot.figure(figsize=(11, 7)) 
pyplot.plot(x, y_sin, color='blue', linewidth=2.0) 
pyplot.plot(x, y_cos, color='red', linewidth=2.0) 
# x軸の最小値、最大値を、xの最小値、最大値の1.2倍とする 
pyplot.xlim(x.min() * 1.2, x.max() * 1.2) 
# y軸の最小値、最大値を、y_sinの最小値、最大値の1.2倍とする 
pyplot.ylim(y_sin.min() * 1.2, y_sin.max() * 1.2) 
pyplot.show()

軸のメモリを設定する

pyplot.xticks(), pyplot.yticks() 関数で設定します。

from matplotlib import pyplot
import numpy

x = numpy.linspace(-numpy.pi * 2, numpy.pi * 2, 1024, endpoint=True)
y_sin = numpy.sin(x)
y_cos = numpy.cos(x)
pyplot.figure(figsize=(11, 7))

pyplot.plot(x, y_sin, color='blue', linewidth=2.0)
pyplot.plot(x, y_cos, color='red', linewidth=2.0)

pyplot.xlim(x.min() * 1.2, x.max() * 1.2)
pyplot.ylim(y_sin.min() * 1.2, y_sin.max() * 1.2)

# x軸の目盛設定.リストを与える
pyplot.xticks([-numpy.pi * 2, -numpy.pi, 0, numpy.pi, numpy.pi * 2])
# y軸の目盛設定.リストを与える
pyplot.yticks([-1, -0.5, 0, 0.5, 1])

pyplot.show()

メモリのラベルを変更する

from matplotlib import pyplot 
import numpy
x = numpy.linspace(-numpy.pi * 2, numpy.pi * 2, 1024, endpoint=True) 
y_sin = numpy.sin(x) 
y_cos = numpy.cos(x) 
pyplot.figure(figsize=(11, 7)) 
pyplot.plot(x, y_sin, color='blue', linewidth=2.0) 
pyplot.plot(x, y_cos, color='red', linewidth=2.0) 
pyplot.xlim(x.min() * 1.2, x.max() * 1.2) 
pyplot.ylim(y_sin.min() * 1.2, y_sin.max() * 1.2) 
# x軸の目盛設定.リストを与える 
pyplot.xticks([-numpy.pi * 2, -numpy.pi, 0, numpy.pi, numpy.pi * 2], [r'$-2\pi$', r'$-\pi$', r'$0$', r'$\pi$', r'$2\pi$']) 
# 上記の目盛に別名を付ける 
# y軸の目盛設定.リストを与える 
pyplot.yticks([-1, -0.5, 0, 0.5, 1], [r'$-1.0$', r'$-0.5$', r'$0.0$', r'$0.5$', r'$1.0$']) # 上記の目盛に別名を付ける 
pyplot.show()

凡例を追加する

凡例を追加するときは pyplot.legent() 関数を呼びます。この時 pyplot.plot() 関数に描画するデータを渡すときにラベル名をパラメータ label として与えます。

from matplotlib import pyplot
import numpy
x = numpy.linspace(-numpy.pi * 2, numpy.pi * 2, 1024, endpoint=True)
y_sin = numpy.sin(x)
y_cos = numpy.cos(x)
pyplot.figure(figsize=(11, 7))
pyplot.plot(x, y_sin, color='blue', linewidth=2.0, label=r'$\sin(x)$')
pyplot.plot(x, y_cos, color='red', linewidth=2.0, label=r'$\cos(x)$')
pyplot.xlim(x.min() * 1.2, x.max() * 1.2)
pyplot.ylim(y_sin.min() * 1.2, y_sin.max() * 1.2)
pyplot.xticks([-numpy.pi * 2, -numpy.pi, 0, numpy.pi, numpy.pi * 2], [r'$-2\pi$', r'$-\pi$', r'$0$', r'$\pi$', r'$2\pi$'])
pyplot.yticks([-1, -0.5, 0, 0.5, 1], [r'$-1.0$', r'$-0.5$', r'$0.0$', r'$0.5$', r'$1.0$'])
# 凡例追加
pyplot.legend()
pyplot.show()

グラフタイトルを追加する

pyplot.title() 関数を利用します。

from matplotlib import pyplot 
import numpy 
x = numpy.linspace(-numpy.pi * 2, numpy.pi * 2, 1024, endpoint=True) 
y_sin = numpy.sin(x) 
y_cos = numpy.cos(x) 
pyplot.figure(figsize=(11, 7)) 
pyplot.plot(x, y_sin, color='blue', linewidth=2.0, label=r'$\sin(x)$') 
pyplot.plot(x, y_cos, color='red', linewidth=2.0, label=r'$\cos(x)$') 
pyplot.xlim(x.min() * 1.2, x.max() * 1.2) 
pyplot.ylim(y_sin.min() * 1.2, y_sin.max() * 1.2) 
pyplot.xticks([-numpy.pi * 2, -numpy.pi, 0, numpy.pi, numpy.pi * 2], [r'$-2\pi$', r'$-\pi$', r'$0$', r'$\pi$', r'$2\pi$']) 
pyplot.yticks([-1, -0.5, 0, 0.5, 1], [r'$-1.0$', r'$-0.5$', r'$0.0$', r'$0.5$', r'$1.0$']) 
pyplot.legend() 
# タイトル追加 
pyplot.title('Test Plot') 
pyplot.show()

画像の表示

import matplotlib.pyplot as plt
from matplotlib.image import imread

img = imread("image.png")
plt.imshow(img)
plt.show()