第7話 Pythonを学ぶ -matplotlibを用いた描画-
AI(ディープラーニング)のプログラムを作るべくNumPyというPythonの拡張モジュール(ツール)を勉強しています。
今回はその4回目でmatplotlibを用いた描画を行います。
内容は次のとおりです。
・matplotlibのインポート
・グラフの描画
・グラフの装飾
・画像の表示
「はじめてのディープラーニング」(我妻幸長著)を教科書に学習を進めていますが、進捗状況は次のような感じです。
先は長い、というよりまだスタート地点にも立てていないというべき状況ですw
それでは今回の学習をスタートします!
matplotlibのインポート
matplotlibとは
・グラフの描画
・画像の表示
・簡単なアニメーションの作成
などができる、Pythonの外部モジュールです。
(これまで触ってきたNumPyも外部モジュール)
一般論としてデータの可視化は非常に大事ですが、ディープラーニングにおいてもこれは同じなのですね。
教科書で取り扱うくらいのモジュールなのですから、きっときれいなグラフなどが描けるはず。期待しちゃいますね。
早速インポートしてましょう。
先頭に%matplotlib inlineとおまじないを書いて、それからmatplotlibのpyplotというモジュールをpltという名前でインポートしました。
インポートの仕方はNumPyと同じで簡単です。
なお、先頭の%matplotlib inline を抜かすとグラフが表示されないことがあるようです。
グラフの描画
pyplotを使って試しにsin関数のグラフを描いてみます。
適当なデータ配列を作って、それをsin関数にぶち込んでみましょう。
簡単にグラフが描けましたね。
実は最後のplt.show()は記述しなくても、グラフは表示されます。
(Juypter NoteBookが賢いから勝手に表示してくれているであって、本来抜かしてはならない記述のはず。)
グラフの装飾
先ほど描いたグラフには、タイトルや軸の情報などがないですよね。
なので装飾によって情報をつけ足していく必要があります。
これをどうやってやるのか確認していきます。
①軸ラベル、タイトルをつける
ラベルの名前をつけるとき・・・plt.xlabel("名前")
タイトルをつけるとき・・・plt.title("名前")
これは悩むところは特にないですね。
②データを描く
plt.plot(横軸データ, 縦軸データ, 凡例名, 線の種類)でデータをプロットします。
先ほどの例題から1本カーブを増やしてますが、plt.plotを2本分にすれば同じように描けます。
もっと増えた場合は、必要な分だけplt.plot()を使っていけば良さそうです。
2つ目のカーブはdashedの線にして、1つ目と区別してますね。
データが何を意味しているのかわかるように、凡例名はplt.plot()の中でつけます。
③凡例を表示させる
表示が何を意味しているかわかるように、凡例を表示させています。
凡例の表示位置はグラフと被らないようにすべきですね。
グラフの描画は、線の色・太さ、凡例位置など、色々なこと設定できるので、これらの方法は別の回にまとめることにします。
散布図の表示
scatter関数を使って散布図(線じゃなくて点のグラフ)を描くことができます。
例として(x, y) がランダムな値をプロットしてみましょう。
こちらも特段難しいことはありません。
plotとの違いは、markerを指定するところくらいでしょうか。
markerには色々な種類がありそうなので別の機会に調べてみようと思います。
画像の表示
imshow関数を使って画像を表示します。
「pyplotのimshow関数は配列を画像として表示することができる」ようです。
ちょっと待て。配列を画像で表示って、一体どういうことだ?!
というわけで例題を確認します。
数値を色の濃淡で表すことができました。
これは個人的にはすごく画期的!
でもグレースケールだと味気ないなぁ・・・と思ってgrayを消してみるとカラーになりました。
PC画面ならこちらの方が見やすいですね。
ちなみにこのような図を「ヒートマップ」ということを、ここで初めて知りました^^;
普通の画像を表示させるときはこのようにします。
ここでのポイントはファイルパスです。
ファイルパスを間違えると読み込んでくれません。
今回は相対パスでアクセスしましたが、
実行するファイルと、アクセスしたいファイルは同じフォルダにしておくとファイルパスの指定がいらないので楽ですね。
今回はmatplotlibを使ってグラフを描いてみました。
グラフで表示できるようになると、プログラミングした感が一層高まって楽しいですね^^
そして、今回で教科書2章のPythonの概要は終了です。長かった〜。
Pythonは初めて触りましたが、学生時代にMatlabをやっていたおかげか結構簡単に感じました。
今度からは教科書の3章「ディープラーニングに必要な数学」に入ります。
気合いを入れていかなければ!
それではまた(^_^)ノシ
よろしければサポートお願いします!いただいたサポートは書籍代等に活用いたします!