読者です 読者をやめる 読者になる 読者になる

ぱんだのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

matplotlib: 概要-図が表れるまでの流れ-

matplotlibがそもそも何者かは他のサイトを当たってくだされ。ここではプログラムの流れを説明

 

1. 部品の組み立て

   plot()とかsetTitle()とか

2. 実際のグラフ描写

   show()とか

 

うん、シンプル極まりない

 

1.部品の組み立て

   plot()やsetTitle()で図のアウトライン指定、データの読み込み等を行う。この時点では"出力非依存"に図を組み立ててく。ノリとしては脳内に図を組み立ててくノリ。

2. 実際のグラフ描写

   最終的にグラフに描写したとき、その描写先は色々ある(jpegなど画像ファイル、PyQtなどのGUI、初期設定のmatplotlibのウインドetc)。その出先に合わせて実際に描写を行う。ノリとしては脳内のイメージを画面に表示したり絵に描いたりするノリ。

 

つまるところ、仮想の図を作って、それを実際に描写するという、ごく当たり前のステップを踏んでる。勘所は、それに合わせて関数やclass、module別れているということ。

 

1. 部品の組み立て

    主に2通り。

    1つ目はpyplotを使って手続き的に作る方法。plt.figure()、plt.setTitle()と関数を繰り返していってグラフ作成。比較的簡単に作れるし便利だけど、複雑なグラフは苦手

   2つ目はオブジェクト志向な方法。わかる人はOOPで書くと言えばわかる。ただしconstructerやsetter()でコツコツ作るというよりは、helper methods(と公式のdocumentにある)というまとめてsetterな関数を使う(気がする)。helper methodを最初に使って基本的なinstance群を作成、あとはsetterで細かい調整、て感じ。

2. 実際のグラフ描写

   Backendが担当(what is backend: http://matplotlib.org/faq/usage_faq.html)。より細かく分類すると、実際に描写をする"renderer"と描写される領域"canvas"に分けられる。二つの組み合わせで使うbackendが決まる(Qt5Aggとか)。

 

pyplotモジュールの関数による手続き型プログラミング、またはOOPでグラフを構成し、Backendがcanvas上にrendererで描写

 

 

When the figure is rendered, all of the artists are drawn to the canvas

(http://matplotlib.org/faq/usage_faq.html)

 

matplotlib separates the concept of the renderer (the thing that actually does the drawing) from the canvas (the place where the drawing goes). 

公式 User Guide, 下の方

http://matplotlib.org/users/intro.html