Octaveコマンドまとめ2 -データプロット-

#前回まで
前回はベクトル等に対する操作を中心にまとめました.

[Octaveコマンドまとめ1 -基本操作(主にベクトル)-](https://qiita.com/mmm5mmm/items/73f6d8a8d2edd7488c68)

今回はデータプロットについてまとめます.
前回と同じく, 内容はAndrew Ng 先生の『Octave/Matlab Tutorial』のまとめです.

実際この講義ではデータプロット部分はほとんど記述してくださっていたので, あんまり使わない可能性もありますが...

##使用データ作成
今回の記事では, 以下のように作成したsin,cosのデータを使用していきます.

```matlab:plotting_data.m
t = [1:0.01:2]; % x軸の数値作成
y1 = cos(2*pi*4*t); % cosデータ作成
y2 = sin(2*pi*4*t); % sinデータ作成
```

##複数のグラフを重ねてプロット

以下のようなグラフを作成します.
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437676/a331cde9-4678-dcce-1777-c8c7f2b2f008.png" width=60%>


```matlab:plotting_data.m
plot(t,y1) % cosデータプロット
hold on % グラフをそのままに
plot(t,y2,'r') % sinデータを重ねてプロット
```

x軸の数値配列, y軸の数値配列を**plot**に渡すことで簡単にプロットできます.
通常複数のデータを**plot**で連続で処理しても,グラフは上書きされ一つのデータしか表示されません.
**hold on**により,それ以降データを重ねてグラフに表示することが可能になります.
**'r'**のような引数を渡すことでグラフの色を指定することも可能です.

```matlab:plotting_data.m
xlabel('times') % x軸ラベル
ylabel('value') % y軸ラベル
legend('cos','sin') % 凡例
title('title') % タイトル
```
軸ラベルや凡例,タイトルをグラフに追加します.

```matlab:plotting_data.m
cd '保存先パス' % 保存先へ移動
print -dpng 'ファイル名.png' % 保存
close % クリア
```
最後に保存したい場合は, 保存したいフォルダへ移動してから ファイル名を指定して保存します.
**close**によりグラフを消すことができます.

まとめると以下のようになります.

```matlab:plotting_data.m

t = [1:0.01:2];
y1 = cos(2*pi*4*t);
y2 = sin(2*pi*4*t);

plot(t,y1) % cosデータプロット
hold on % これ以降グラフを重ねることが可能
plot(t,y2,'r')

xlabel('times') % x軸ラベル
ylabel('value') % y軸ラベル
legend('cos','sin') % 凡例
title('title') % タイトル

cd '保存先パス' % 保存先へ移動
print -dpng 'ファイル名.png' % ファイル名を指定して保存
close % グラフクリア
```


##複数のウィンドウに複数のグラフをプロット

以下のようにグラフを作成します.
![img2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437676/04398b24-fdac-7a95-6a9a-e88d082a48b1.png)

複数ウィンドウでグラフを並べます.
(真っ白なキャンバスを複数作って, それらにそれぞれグラフをプロットしていくような感じ)

**figure**で真っ白なウィンドウを作成し,**plot**で現在のウィンドウにグラフを作成します.
先述の**xlabel**,**ylabel**や**legend**等 で現在のウィンドウにどんどん追加できます.


```matlab:plotting_data.m

figure(1);
plot(t,y1);
figure(2);
plot(t,y2,'red');

cd '保存先パス' % 保存先へ移動
print -dpng 'ファイル名.png' % ファイル名を指定して保存
close % グラフクリア
```

##一つのウィンドウに複数グラフをプロット

以下のようにグラフを作成します.
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437676/3143d482-a942-9fe3-7491-367ce69123bf.png" width = 80%>

今回は縦に1つ, 横に2つに分けてグラフを描きます.
縦,横に1,2で分割しているので, 左側を(1,2,1), 右側を(1,2,2)として座標で指定できます.
よって**subplot(1,2,1)**で ''横に2つに分割したやつの左側にグラフを描きます'' と指定してどんどん詳細を書き込んでいきます.
今回はグラフのプロットのみですが...
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437676/ad7f1939-951f-4fe3-0cd0-d5c6a3bc17e2.png" width = 50%>


```matlab:plotting_data.m
subplot(1,2,1);
plot(t,y1);
subplot(1,2,2);
plot(t,y2);

cd '保存先パス' % 保存先へ移動
print -dpng 'ファイル名.png' % ファイル名を指定して保存
close % グラフクリア
```
## 2次元配列を画像として表示

以下のようなデータを作成します.
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437676/7420bc56-e9f0-708c-0b96-057c4f826ee1.png" width = 50%>
グレースケールも.
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437676/6c035f43-73a7-7361-32eb-8c49a8d115d4.png" width = 50%>


ここでは今までとは別に, 2次元データを使用します.

前回の記事で記載していますが, **magic(7)** で縦, 横, 斜めの和が同値となる7×7行列が作成可能です.
**imagesc** で データをイメージとして表示します.
**colorbar**でカラーバーの追加, **colormap gray**でグレースケール画像への変更ができます.

```matlab:plotting_data.m
A = magic(7)

imagesc(A)
colorbar
colormap gray
%imagesc(A),colorbar,colormap gray; でも同様

cd '保存先パス' % 保存先へ移動
print -dpng 'ファイル名.png' % ファイル名を指定して保存
close % グラフクリア

```
##以上

次回はループ, if文, 関数についてまとめると思います.