今回はJupyter Notebook上で有名はグラフィック用の標準ライブラリーである「Matplotlib」を使って、各種グラフを描いてみたいと思います。
「Matplotlib」は主に2次元のデータを可視化するためのライブラリーでオペレーションシステムを選ばないこと、詳細な設定ができること、多彩な出力形式に対応している定番の可視化ツールです。
まずは、初めに「折れ線グラフ」次に「散布図」を描いてみたいと思います。Jupyter Notebookの実装がまだの方は以下のぼくの記事へのリンクから実装の方法を調べてくださいね。
LINKLINK:Jupyter Notebookの使い方解説【Python学習・データ解析】
Matplotlibについて
![matplotlib_01](https://miyukimedaka.com/wp-content/uploads/2019/08/matplotlib_01-1-1024x682.jpg)
![matplotlib_01](https://miyukimedaka.com/wp-content/uploads/2019/08/matplotlib_01-1024x63.jpg)
![みゆきメダカ](https://miyukimedaka.com/wp-content/uploads/2019/04/miyukimedaka_normal_fukidashi.jpg)
上のスクショのライン1は、標準ライブラリーの「matplotlib」にある「pyplot」モジュールをエイリアス名「plt」として読み込むコードだよ。特に「plt」とする必要はなく、任意の名前で大丈夫だけれど、習慣的にこのライブラリーはこの名前で読み込まれるので、これに従うことをお勧めするよ。
![みゆきメダカ](https://miyukimedaka.com/wp-content/uploads/2019/04/miyukimedaka_normal_fukidashi.jpg)
同じくライン2は、matplotlibに関するJupyter Notebookのマジックコマンドでコードの下に該当する図を表示するよ。
フィギュアとサブプロットについて
![matplotlib_04](https://miyukimedaka.com/wp-content/uploads/2019/08/matplotlib_04-1024x594.jpg)
Matplotlibでグラフを描写するには、「フィギュア(フィギュアオブジェクト)」と「サブプロット」を作る必要があります。大まかに言って、フィギュアはサブプロットを描写する領域で、サブプロットはグラフを描写する領域です。サブプロットは少なくとも1つ作成する必要があります。
フィギュアにサブプロットを追加する方法は「Figure.add_subplot()」と「pyplot.subplots()」を利用する2つの方法があります。ここでは前者を用いた方法で説明します。
![line_chart_05R](https://miyukimedaka.com/wp-content/uploads/2019/08/line_chart_05R-1024x276.jpg)
![みゆきメダカ](https://miyukimedaka.com/wp-content/uploads/2019/04/miyukimedaka_normal_fukidashi.jpg)
ライン4:figure()関数でFigureクラスのインスタンスを生成するよ。このインスタンスをフィギュアと呼ぶよ。
ライン6〜8:add_subplot()メソッドでサブプロットをフィギュアの指定された位置に配置するよ。ここでは(221)なので、2行2列の1番目の位置に配置するんだ。番号の振り方は、左上から始まり、右に順次移動して、右端に来ると次は一段下げて左から右へ移動します。
![line_chart_06R](https://miyukimedaka.com/wp-content/uploads/2019/08/line_chart_06R-1024x367.jpg)
折れ線グラフの描き方
![matplotlib_05](https://miyukimedaka.com/wp-content/uploads/2019/08/matplotlib_05-1024x682.jpg)
それでは、matplotlibを読み込んで、それに関するマジックコマンドを宣言して、ごく簡単な折れ線グラフ(実際には折れていませんが。)を描いてみよう。折れ線グラフはax.plot()メソッドを用いて描写します。
![line_chart_01](https://miyukimedaka.com/wp-content/uploads/2019/08/line_chart_01-1024x285.jpg)
![みゆきメダカ](https://miyukimedaka.com/wp-content/uploads/2019/04/miyukimedaka_normal_fukidashi.jpg)
上のスクショのコードを入力して実行すると下のスクショの折れ線グラフがJupyter Notebook上に表示されるよ。
![みゆきメダカ](https://miyukimedaka.com/wp-content/uploads/2019/04/miyukimedaka_normal_fukidashi.jpg)
それじゃ、具体的にラインごとにコードを解説するよ。
ライン9の「dat = [0, 1]」のようにplotメソッドの引数が1つの場合は、与えられた引数はY値として設定され、X値は最小値=0、最大値=リストの要素数ー1の整数列が与えられるよ。
ライン8の「ax.plot(dat)」は折れ線グラフを描写します。
ライン10の「plt.show()」はブラフを表示します。
![line-chart-02](https://miyukimedaka.com/wp-content/uploads/2019/08/line-chart-02-1024x367.jpg)
![line_chart_03](https://miyukimedaka.com/wp-content/uploads/2019/08/line_chart_03-1024x330.jpg)
![みゆきメダカ](https://miyukimedaka.com/wp-content/uploads/2019/04/miyukimedaka_normal_fukidashi.jpg)
上のスクショでは、前述のコードにライン4の「plt.style.use('ggplot')
」を追記しているよ。このコマンドを追加すると下のスクショのように背景に細かいグリッドが表示されるよ。
![line_chart_04](https://miyukimedaka.com/wp-content/uploads/2019/08/line_chart_04-1024x363.jpg)
![line_chart_07R](https://miyukimedaka.com/wp-content/uploads/2019/08/line_chart_07R-1024x338.jpg)
![みゆきメダカ](https://miyukimedaka.com/wp-content/uploads/2019/04/miyukimedaka_normal_fukidashi.jpg)
X値とY値を両方を与えるには、第1、第2引数にX値、Y値を与えよう。
![line_chart_08R](https://miyukimedaka.com/wp-content/uploads/2019/08/line_chart_08R-1024x329.jpg)
散布図の描き方
![matplotlib_06](https://miyukimedaka.com/wp-content/uploads/2019/08/matplotlib_06-1024x634.jpg)
散布図はax.scatter()メソッドを用いて描写します。scatter()メソッドの第1、第2引数にそれぞれX値、Y値を与えます。
![scatter_plot_01R](https://miyukimedaka.com/wp-content/uploads/2019/08/scatter_plot_01R-1024x481.jpg)
![みゆきメダカ](https://miyukimedaka.com/wp-content/uploads/2019/04/miyukimedaka_normal_fukidashi.jpg)
散布図も基本的には折れ線グラフの応用だよ。上のコーディングの例ではNumpyを使って乱数を発生させているよ。
![scatter_plot_02R](https://miyukimedaka.com/wp-content/uploads/2019/08/scatter_plot_02R-1024x368.jpg)
まとめ
![matplotlib_03](https://miyukimedaka.com/wp-content/uploads/2019/08/matplotlib_03-1024x682.jpg)
いかがでしたか。Jupyter NotebookでPythonとMatplotlibを使えば思いの外簡単にグラフが描けることが分かっていただけたかと思います。ご説明した例をもとに色々と修正を加えて、いろんな形を試してみてください。
それでは最後までお付き合いありがとうございました。さようなら。
コメント