Pythonで数学的な図表を描画する際に便利なmatplotlibですが、ネットで検索してもほとんど語られていない珍しい職人技があるので紹介します。
1. メモリー消費量を下げるために
多くの人はJupyter NotebookでPythonコードを書いて実行しているでしょう。開発過程ではどのような図表が生成されるかNotebook上に描画するとしても、最終的な実行には描画が必要無いことが多いと思います。matplotlibのインタラクティブモード(つまり、Jupyter Notebook上に描画するモード)はメモリーを非常に消費するため、Notebook上に描画する必要がない場合は下記のように「matplotlib.interactive(False)」と宣言してこのメモリー消費を抑えることができます。
import matplotlib # memory management matplotlib.interactive(False)
2. 描画される図表のフレームを消してグラフ部分を最大化する
matplotlibで生成したグラフをDeep Learningの学習データとして使用する場合、グラフの枠やラベルが邪魔な場合があります。そのような際に枠やラベルを限界まで消す方法が下記です。
# 図表の縦横比を決める plt.figure(figsize=(10, 3)) # 図表の軸やラベルの領域について徹底的にFalseで非表示にする plt.tick_params(labelbottom=False, labelleft=False, labelright=False, labeltop=False, bottom=False, left=False, right=False, top=False)
3. y=np.log(x)でxにゼロが入る可能性がある場合
y=log(x)のグラフではxに0が入ることはできません。10を何乗してもゼロにはならないからです。しかし、処理上で対数関数を使う必要がある場合は困るので、その場合は下記のように「np.log1p()」を使います。これで数学的にエラーを回避でき、実際の計算上も特に問題は発生しません。
np.log1p()
意外と知られていないコツを紹介しました。