5-2.オブジェクト指向ライティング
プログラミングをやっていくと,「オブジェクト指向」という言葉を聞くかもしれません.しかし,その例えは非常に抽象的なものが多く,初学者がその真髄を理解することは非常に困難です.Matplotlibにはこのオブジェクト指向を用いたグラフ描画手法が実装されており,オブジェクト=モノとしてグラフを捉え,グラフを作成していく方法があります.先程のplt.plotなどの書き方はMATLAB的記法などと呼ばれ,オブジェクト指向記法とは異なるものになります.ここでは,グラフの体裁を整える方法を学ぶ前にこのオブジェクト指向を用いたMatplotlibの記法を学んでいきます.
Matplotlibをモノとして捉えると,まずは白紙という大枠から始まり,その中にグラフがあり,軸タイトルや目盛などのモノで構成されています.その大枠はMatplotlibの公式テキストにわかりやすい形で記載されています.

まずは,Figureというオブジェクトを白紙のような形で作成し,そこにAxesやAxisというオブジェクトを順次追加していく形です.先程の折れ線グラフを例にオブジェクト指向記法の一端を体験しましょう.先程とほとんど同じグラフができているはずです.
>>> fig = plt.figure(figsize=(5,5)) #figure object >>> ax = fig.add_subplot(1,1,1) #add graph (axes) object into figure obeject >>> x = np.arange(0,11) >>> y = np.sin(x) >>> ax.plot(x,y) #axesオブジェクト内にグラフ描画 >>> plt.show() #出力
plt.figure([figsize=None][,dpi=None][,facecolor=None][,edgecolor=None]…)
Figureオブジェクトを作成します.figsizeでインチベースのグラフサイズを指定できます.dpiはグラフのドット数,facecolorは背景色,edgecolorは外枠の色をそれぞれ指定できます.
Figureオブジェクトを作成します.figsizeでインチベースのグラフサイズを指定できます.dpiはグラフのドット数,facecolorは背景色,edgecolorは外枠の色をそれぞれ指定できます.
fig.add_subplot(N,M,Number…)
Figureオブジェクトの中にaxesオブジェクトを描画します.また,N×MにFigureオブジェクトを分解した場合のNumber番目にグラフを配置します.
Figureオブジェクトの中にaxesオブジェクトを描画します.また,N×MにFigureオブジェクトを分解した場合のNumber番目にグラフを配置します.

fig.add_subplotはまっさらなグラフをFigureという白紙に書くというイメージを持ってください.その証拠に fig.add_subplot(1,1,1)をした直後に plt.show()による出力を行うと何も書かれていないグラフが生成されていることが分かります.また,グラフを生成に伴いAxisオブジェクトも同時に生成されています.
>>> fig = plt.figure(figsize=(5,5)) #figure object >>> ax = fig.add_subplot(1,1,1) #add graph (axes) object into figure obeject >>> plt.show() #出力

add_subplot(1,1,1)の(1,1,1)の意味ですが,Figureを1×1のスペースに分割した時の1番目を意味しています.例えば,先程の add_subplot(1,1,1)を add_subplot(1,2,1)とした際の形は以下のように確認できます.
>>> fig = plt.figure(figsize=(5,5),edgecolor =”k”) #figure object with defined edge >>> ax = fig.add_subplot(1,2,1) #add graph (axes) object into figure obeject >>> plt.show() #出力

左右をグラフで埋めたければ,対となるadd_subplot(1,2,2)を追加描画すればいいだけです.

オブジェクト指向によるMatplotlibの記述で顕著なのが,ax.plotの部分です.これはaxesというまっさらなグラフオブジェクトにプロットしますという命令です.一方で,plt.plotは特にそういったオブジェクトの記述はなく,ただただ書いただけのグラフが出力されます.plt.plotはFigureやAxesオブジェクトの生成からプロットまでを暗に直接行ってくれており,こちらのほうが感覚的に記述できるという人も居ます.単にとあるデータをグラフ化してトレンドだけをちょっと見てみたい人にはMATLAB的な記法が良いでしょう.しかし,グラフの体裁を整える点においてオブジェクト記法は非常に優れています.