グラフ描画(Matplotlib)
Pythonで人工知能(AI)開発を行う場合、データがどのようなものか視覚的に知っておきたいことがあります。具体的にはデータをグラフとして描画するのですが、様々な見せ方があります。まずは、中学校で習った1次関数(直線)の表示から始めます。点をたくさん打って線に見せるような描き方です。知識より実務寄りです。E資格だけを考えるとあまり重要ではありませんが、こんなことできないかな?と遊び感覚で(コードはオリジナル)。
機械学習ライブラリ(入門編)
このページはグラフ描画のみ記載しました。Matplotlibは画像表示も可能です。CV2やPillowを使った画像加工と組み合わせたMatplotlibの画像表示をこちらのページで紹介しています。
視覚化はデータとイメージをつなぎます
基本
線を引く
まずは簡単に線分です。np.linspaceは指定区間で点を打ちます。import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-10, 10, 50) #-10~10の間に50個の点
y = x * 2
plt.plot(x, y)
plt.show()
窓を2つ用意する
複数の窓を用意して、別々に描画します。三角関数np.sinnp.cosを使いました。import numpy as np
import matplotlib.pyplot as plt
x = np.radians(np.linspace(-180,180,50))
y = np.sin(x)
z = np.cos(x)
#1つ目の窓
plt.subplot(121) #"1"行"2"列の窓の"1"番目
plt.plot(x, y) #sinの方を描画
#2つ目の窓
plt.subplot(122) #"1"行"2"列の窓の"2"番目
plt.plot(x, z) #cosの方を描画
plt.show()
タイトルを書いたり、軸や目盛りもプロットできるようです。
発展
データの形を見せる
集計よってデータの形を見せることができます。例として、ヒストグラムを使って標準正規分布の特徴を表します。
ランダム値を1000個ぐらい取ってくれば、山なりの形が見えてきます。
変化を見せる
時間軸を加えれば、変化を見せることもできます。animationを使いました。import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig = plt.figure()
x = np.radians(np.linspace(0,360,1000))
ims = [plt.plot(x, np.sin(n*x), animated=True) for n in range(10)]
ani = animation.ArtistAnimation(fig, ims, interval=500, repeat_delay=1000, blit=True)
plt.show() #GUI環境の場合【補足】を参照
for文の内包表記を使って、list配列にplotした情報を詰め込みました。Pythonの復習をしてみてください。
立体
三角関数を使っていると、円柱も描けるような気がしました。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
#fig作成
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.view_init(azim=20,elev=20)
#図形回転
def spin(i):
x = i if i < 25 else 24
y = 0 if i < 25 else i-24
ax.view_init(azim=20+x,elev=20+y)
#円柱
def plot():
x = np.cos(np.radians(np.linspace(-180*50, 180*50, 10000)))
y = np.sin(np.radians(np.linspace(-180*50, 180*50, 10000)))
z = 1/1000 * np.arange(10000)
ax.plot(x, y, z)
#表示
ani = animation.FuncAnimation(fig, init_func=plot, func=spin, frames=range(50),interval=100, repeat_delay=1000)
plt.show() #GUI環境の場合【補足】を参照
seabornのようにグラフに特化したライブラリもあります。
補足
GUI環境でのアニメーション
『Jupyter Notebook』 『Google Colaboratory』 の場合、plt.show()の代わりに、以下コードを利用してください。#plt.show()の代わりに
from matplotlib import rc
from IPython.display import HTML
rc('animation', html='jshtml')
plt.close()
ani
以上





