jupyterにで用いるライブラリーついて何回か説明してきました。「データ分析ツール Jupyter入門」(著者:掌田津耶乃 発行所:秀和システム)を種本に、先ずは自分でやってみて上手くできない部分のポイントなどを含めて自分用の資料にまとめてきました。図書館の返却日が来てしまいましたので、本日の「Matplotlib」の説明で一区切りします。皆さんも、今までのブログをご覧いただければ、この本の299ページ/438ページ中、70%は読破されたことになります。後の3割の分は、「pillow」、jupyterの機能拡張やカスタマイズに関する章なので、ここまで理解できれば、jupyter notebookの使い方やpythonで利用するライブラリーの内容も少しは理解できたのではないかと思います。 では一区切りの最後に「Matplotlib」を説明します。このライブラリーはグラフを描くので、一番利用するかもしれません。
資料はこちら → Jupyterその10
p.1 ①WindowsPowershellあるいはコマンドプロンプトを用いて, py –m pip install matplotlibでインストールし、②plotでグラフを作成してshowでグラフを描きます。Matplotlibにあるpyplotというモジュールをインポートして「plt」と略します。 上述の②がMatplotlibの基本です。plt.show()にして初めてグラフが描かれます。plt.plotはグラフを描くためのデータを揃えていると思ってください。
p.2 左図はsin曲線の事例です。numpyのπを用い、np.piとします。xにーπ~πまで0.1刻みの数列作成を代入し、そのxをnumpyのsinxに代入してyに代入します。後は、お決まりのplt.plot(x, y)とplt.show()ですね。 右は、sinとcos曲線を描いています。共通のxに対してy0とy1を各々計算して描くだけです。
p.3 グラフの体裁を整えるスクリプトです。「plt.」の後ろにスクリプトを付けるだけで、タイトル、ラベルをグラフ内に表示できます。「plt.legend」は凡例ですが、表示場所は空いている場所に自動で表示してくれます。グリッド線は、種々の引数があり、好みの表示にすることができます。「plt.xlim」「plt.ylim」はグラフの枠を指定します。
p.4 グラフは連続した線にみえますが、点の集まりです。点を図形で表したり、色を変えることができます。右表の図形と色の組み合わせをスクリプト内に盛り込めば、表示に反映可能です。
p.5 グラフは「Figure」と「Axes」でできています。Figureの範囲内にAxesは幾つも描けます。
p.6 左2つのグラフを描いた例です。右はグラフ内に大きさを指定して別のグラフを入れ込んでいます。
p.7 グラフ内にテキストや矢印を書き込むスクリプトです。矢印のみ描く場合は、xy=plt.arrow(X値、Y値、 X値、Y値)で描き、矢印にテキストを付ける場合は、xy=X値、Y値)とxytext=X値、Y値)を組み合わせて描きます。
p.8 水平線は「axhline」、垂直線は「axvline」で描きます。水平方向の塗りつぶしは「axhspan」、垂直方向は「axvspan」で指示します。
p.9 指定領域塗りつぶしは、Xリストに塗りつぶすXデータを、YリストにYデータを配列として予め入れて置き、「fill」を用います。 右図は棒グラフのスクリプト例です。Xの横軸のインデックスのリストを、Yには乱数のデータを入れて、「bar」で棒グラフにします。
p.10 左が棒グラフを重ねる場合です。y0が1つ目のグラフで、「bottom=y0」とすることで2つ目のy1のグラフが積み重なります。右が棒グラフを並べる場合です。「tick_label」でX軸のラベルを設定します。
p.11 円グラフは「pie(データ)」で描け、引数により形態を変えることができます。 散布図は「scatter(Xデータ、Yデータ)」を用います。色は「pcolormesh( Xデータ、Yデータ、色データ)」で指定可能です。
p.12 ヒストグラムは「(n, bin, patches)=plt.hist(データ、分割数)」、正規分布曲線は「plot(bins,norm.pdf(bins, loc=mu, scale=sigma))」で描くことができます。
p.13 3Dグラフを描きます。Axes3Dをインポートし、「mpl_toolkits.mplot3d」というモジュールを用います。axという3D用のfigureを用意し、サーフェース描画は「ax.plot_surface(Xデータ、Yデータ、Zデータ)」、ワイヤーフレーム描画は「ax.plot_wireframe(Xデータ、Yデータ、Zデータ)」です。なめらかに描く場合は、「antialiased =True」。回転させる場合は、「ax. view_init (縦角度、回転角度)」。投影する場合は、「ax.contourf(Xデータ、Yデータ、Zデータ)」を用い、投影する面(x、y、z)を「zdir」で指定します。
p.14 グラデーションは「plt.pcolormesh」を用い、「cmap」にautumn,bone,copper,flag,gray,hot,jet,pink,prism,spring,summer,winterなどのモードがあります。試してみてください。
以上Matplotlibの機能について説明しました。まだまだいろんな機能がありますが、基本的なこれらだけでも十分だと思います。ヒストグラムや3Dの投影図がこんなに簡単に描けるのですね。
今回用いたスクリプトはこちら → jupyter10(スクリプト)