論文用のグラフ製図を検討した件


概要

最近修士論文を書いていて、Activation function(Sigmoidなど)の説明には、グラフで説明した方がより分かりやすいので、図を書こうとしたが、壁に衝突した。
そこで解決策を模索中に出会ったものを紹介。まず環境は以下になります。

環境

  • Win10
  • Word2016

結論部

Answer first

先に結論を言うとMicrosoft Mathematics(略:MSMath),OneNote(Microsoft), PythonのMatplotlib,Latex という4つの方法を見つけたけど、それぞれの個性がある。

使いやすさ:OneNote ≒ MSMath > Matplotlib > Latex
難易度:Latex >> Matplotlib > MSMath ≒ OneNote (使いやすさと逆)
カスタマイズ可能度:Latex > Matplotlib >> MSMath ≒ OneNote ≒ 0
キレイ度:Latex >> Matplotlib > OneNote > MSMath

では、一つの例にして図を説明しましょう。
Neural NetworksのActivation function としてよく知られているSigmoid関数の図を作ってみよう。

Method 1 : Microsoft Mathematics

メインの画面は図で示したように、4つの部分に分けていて、
1. 調整部(グラフの表示区間、枠があるかどうか、出力)
2. 特集な文字や符号を入れるところ?
3. 表示するequationを入力するところなど
4. 表示部分

感想としては、不足点はグラフ線の色のカスタマイズ表示区間の設定などあって、スクリーンショットで取ったグラフが論文では見にくいのが感想です。

Downloadはこちら

Method 2: OneNote

OneNoteでグラフを作成する場合、まず数式を作って(1)、ツールの数学を選択し(2)、2Dグラフを作成して(3)、ノートに挿入する(4)って感じです。それぞれの位置などは図に参照。
そこまで複雑ではないが、やはりグラフのカスタマイズできる部分が少ないという感じがあります。

Method 3:Matplotlib

プログラミングを用いることで、ここからはやっと自由にカスタマイズできそうになった。

import math
import numpy as np 
import matplotlib.pyplot as plt 

x = np.linspace(-5, 5, 100) 
pow_ex = pow(e,x)
y = pow_ex/(pow_ex+1) 

plt.plot(x, y, color = 'red') 
plt.title("Sigmoid function") 
plt.xlabel("The label of x") 
plt.ylabel("The label of y") 
plt.show() 

上記のコードの結果は以下のグラフになる。

この中のほとんどが調整可能なので、具体的のやり方は公式サイトは私より詳しいので、そちらを参照していただけます。→Examples using matplotlib.pyplot.plot

Method 3: Latex

まずコードは以下になります。

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{width=10cm, compat=1.16}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    axis lines = center,
    xmin = -5, xmax=5,
    ymin=-1.5, ymax=1.5,
    xlabel = $x$,
    ylabel = {$y=sigmoid(x)$},
]

\addplot [
    domain=-5:5,
    samples=100,
    color=black,
]
{e^x/(e^(x)+1)};

\end{axis}
\end{tikzpicture}
\end{document}

これをOverleafというOnline LatexのwebサービスにCompileしたら、以下の図が出てきました。

Latexのいろんな使い方もあるが、ネットでたくさん情報あるので、いくつかを載ります。
- Learn latex in 30 mins
- 30分もいらないLaTeX入門

latexでできた図のスタイルはわりと自分の好みで、ただコードを調整するのにのdebugは大変すぎるデメリットもある。

終わりに

カスタマイズできないのがやや不便だと思うので、LatexとMatplotlibで行くことにしました。

※やっと今回の件を記録したんで、頭というメモリからスペースをリリースできた。すっきりしたことで修士論文続ける。