Igor グラフ軸設定

まず基本的な画像表示に関連する事項を説明付きでいくつか書くことにしました。この記事はIgorを使ってデフォルトで表示すると左のように表示されるグラフをある程度整えて右のグラフのように表示させるための手順を書いたものです。
![Layout0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1950929/bdb6ea5d-f19e-4b60-5546-1fbe04b5f52a.jpeg)
グラフの波形そのものに意味はありませんがせっかくなのでWaveを作るprocedureも一緒に置いておきます。
ProcedureはIgor上で動かすプログラムを書く場所でタブからWindows→New→Procedureを選ぶと新しいProcedure Windowを作成できます。

```
Function GausSin()
Variable A, x0,Wid,WL,phi
	A = 5
	x0 = 25e-6
	Wid = 10e-6
	WL = 800e-9
	phi = 0
Variable num    = 1000		//Cell数の決定
Variable Max_x  = 50e-6		//x軸の最大値と最小値を指定
Variable Step_x = Max_x/num	//cell数と最大最小値からwaveのstep間隔を決定

Make/o/d/n = (num) GS_Wave	//Waveの作成
	Wave GS = GS_Wave
	setscale/p x, 0,step_x,GS	//Waveのセル間隔を指定
		GS = A*exp(-((x-x0)/Wid)^2)*sin(WL^(-1)*x+phi)	//式で波形を指定
end
```
新しく呼び出したProcedure Windowに上の文章をcopy&pasteしてcomplileしたのちに、コマンドライン(ctrl+Jで呼び出し可)にFunctionの名前(今回の場合はGausSin())を打ち込んで実行するとGS_WaveというWaveができます。

グラフの描画方法は主に
1. Data browser のpreview画面をダブルクリック
2. Windows → New Graphから作成
3. コマンドラインに打ち込み
の三つです。コマンドラインを使う場合は
Display/k=1 GS_Wave
と打ち込むとこのページの一枚目のような画像が表示されます。
なお、この時k=1はグラフを消すとき消してもよいか確認してくるclose window(下画像)を表示させないためのものなのでclose windowが必要な人は打たないでください。
![close.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1950929/7c675d7c-931c-4c14-f13f-2f964afc968f.png)
グラフが表示されたらグラフの軸部分をダブルクリックするか右クリック→Axis propertiesを選択することで以下のような画面を出すことができます。
![axis.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1950929/b07332e3-2ed1-b3ca-ff78-06be99ebf957.png)
この画面が出せたらあとはひたすらいろんな値を変えながら何が変わるのかを見ていけば望んだグラフが出力できると思います。これ以上の説明は不要な気もするのですがよく使う箇所と直感的にわかりづらい箇所を抜粋しておきます。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1950929/27c31fe8-3c21-92e7-6466-3c750163c541.png)
Axis: どの軸の編集をしているかを選択する箇所。
Mirror: 軸の反対側をどの形の軸にするか選択できる。Off/On/No ticks/Labelsがある。デフォルトではOffになっている。
Font: Font。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1950929/9c3c7bd5-c7c6-baaa-2648-b57a1fdff685.png)
Approximately: 軸の数字の個数を変えたいときに使うが本当にapproximatelyでしか変えてくれないので多いか少ないかくらいしか選べない。
Minor Ticks: Minor Ticks(横のグラフ参照)。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1950929/28121abd-6c03-b442-1580-2ad8fb91372f.png)
Exponential labels: 一番直感的じゃない箇所。軸に表示される数はHigh tripとLow tripの間の値な場合少数で表示され、その範囲から出た場合はべき乗表示されます。今回作成したWaveは横軸の最大値が50μm、一メモリあたりの値が10 μm $(10×10^{-6})$なので、デフォルトのLow trip = 0.01の設定では軸の数値はべき乗表示され、右下に$[×10^{-6}]$が付きます(黄色枠)。
Low tripを一メモリあたりの値である$10×10^{-6}$よりも小さい値にすると少数表示することができます(青枠)。
これに対し、Exponent prescaleに整数値nを入れると$10^{n}$をかけた数字を表示してくれます(緑)。μmやfsの系で計算したグラフを出力する時には多用します。ただしここに数字を入れてもAxis labelが空白状態だと反映されてくれないのでラベルを追加する必要があります。文章はいらないけど桁だけ変えたいときにはラベルに空白を一つ打ち込んでください。
Tick Dimensions: デフォルトでは外側に張り出してる軸上の線を内側にしまったり長さを調節したりする箇所。
Grid: Grid。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1950929/bf3355a1-1d35-415c-84b2-9239753bb961.png)
Axis Lael: ラベルの文章をうつ場所
Manual Range Setting: グラフの表示範囲を設定する場所。Igorのデフォルトでは表示範囲はグラフの存在領域ギリギリを攻めてくるので少し余白を持たせると見やすくなります。

以上の箇所をすべて調節すると一番上に示したような形の画像に整えることができます。グラフの見た目は割とよくなりますがこんな事いちいちやってられないので自分好みのグラフの設定ができたら共通部分はfunctionにしてしまうとよいと思います。
![comand.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1950929/5a107f98-edbe-d082-5a4d-06631a6b5db6.png)
上記の手順を行っているとコマンドラインに実行した内容が出力されていくのでコピーしてProcedureに張り付けてしまえば使用することができます。今回の記事の一番上においてあるグラフの見た目を整えるのに使ったFunctionは下のようなものです。

```
Function set()
ModifyGraph tick=2,mirror=2,fSize=10,prescaleExp(bottom)=6,btLen=3,font="Arial"
Label left "Intensity [a.u.]"
Label bottom "Position [μm]"
SetAxis left -6,6
end
```
この他にいちいちDisplay/k=1を打ち込む手間が面倒で特にフォルダ分けとかをしない人は名前を指定すれば表示される関数を同時に作っておくと後々便利だと思います。

```
Function Disp(FileName)
String FileName
	Wave DispWave = $(FileName)
Display/k=1 DispWave
set()
end
```
ちなみに作成したFunctionが多くなってきて名前が覚えられなくなったり間隔で長すぎる関数名を付けたせいで打ち込むのがだるいようなときはNotebook(Window→New→Notebookで作成できるメモ用スペース)に関数を列挙しておくとShift+EnterでFunctionが実行できるのでいろいろと楽です。
![note.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1950929/41758e26-a5ca-41cc-ff5c-727d7f4d7fab.png)

そのうちグラフの色を変えたりテキストボックス追加したりする方法について追記しようと思います。