21
4 データをプロットしてみよう MATLAB の重要な機能の 1 つに可視化(visualization)があります. データをプロットすることによって,数字の羅列を見ているだけではわか らない意味が読み取れるものです.他の人に自分の出した結果を理解して もらうにも可視化は重要です.MATLAB は多彩なプロット機能を持っ ていますが,この章では 2 次元プロットの基本的なことがらについて説明 します. なお,Octave では gnuplot(ニュープロットと読む)を利用してプ ロットします.Octave でも多彩な表現が可能です. copyright c 2004 Tatsuya Kitamura / All rights reserved. 35

第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

第4章 データをプロットしてみよう

MATLABの重要な機能の 1つに可視化(visualization)があります.データをプロットすることによって,数字の羅列を見ているだけではわからない意味が読み取れるものです.他の人に自分の出した結果を理解してもらうにも可視化は重要です.MATLABは多彩なプロット機能を持っていますが,この章では 2次元プロットの基本的なことがらについて説明します.なお,Octaveでは gnuplot(ニュープロットと読む)を利用してプロットします.Octaveでも多彩な表現が可能です.

copyright c© 2004 Tatsuya Kitamura / All rights reserved.

35

Page 2: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

第 4章 データをプロットしてみよう

4.1 1次関数のプロット

まずは 1次関数 y = 2x のグラフをプロットしてみましょう.xの範囲は −5 から 5とします.x と y のデータを作って,これらを引数にしてplot を実行すると,図 4.1のような “Figure No. 1”というタイトルのウィンドウが現れます.これをフィギュアウィンドウ (figure window)と呼びます.

>> x=-5:5;

>> y=2*x;

>> plot(x,y)

図 4.1: y = 2x (−5 ≤ x ≤ 5) のグラフが表示されたフィギュアウィンドウ.

plot の後にセミコロンを付けても付けなくてもコマンドウィンドウでの表示に違いはありません.しかし,plot の後に他のコマンドを続ける場合にはセミコロンが必要です.

MATLABでフィギュアウィンドウを閉じる場合には closeMAT を実行します.Octaveでは closeplotOCT を実行します.X軸の値を指定せず,plot(y)とするだけでもグラフは表示されるので

すが,X軸の目盛りが正しく表示されません.上の例では 1,2,...,11となります.ですから,できるだけ X 軸の値も指定するようにしましょう.グラフ内に複数のラインを表示するときには,以下のようにX 軸の値

と Y 軸の値を順に列挙します.

36

Page 3: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

4.2. グリッドライン

>> x2=-3:3;

>> y2=2*x+1;

>> plot(x,y,x2,y2)

また,行列を引数にしても複数のグラフを表示することができます.

>> x=-5:-5;

>> Y=2*x; Y=[Y; 2*x+1]; Y=[Y; 2*x+2];

>> plot(x,Y)

表示できるグラフの数には特に制限がありません.

4.2 グリッドライン

グリッドライン(grid line)を表示させたいときには,gridを使います.MATLABでは grid on を実行するとグリッドラインが表示され,grid

off を実行するとグリッドラインが非表示になります.Octave では grid

"on",grid "off" のようにダブルクォートを付けます.MATLABでは grid とだけ入力すると,グリッドラインの状態がトグル(toggle)されます.トグルとは 2つの状態を交互に反転させることを意味します.グリッドラインが表示されていない状態で grid を実行するとグリッドラインが表示され,さらに grid を実行するとグリッドラインが非表示になります.Octaveの grid にはトグルの機能がありません.

Octaveでグリッドラインを表示させるときには,grid "on" を実行した後に replotOCT を実行しなければなりません.つまり,以下のようにする必要があります.

octave:4> grid "on"

octave:5> replot

グリッドラインを消去する場合も同様で,grid off の後に replotOCT を実行しないと,グラフに反映されません.

4.3 多彩なラインとマーカー

MATLABと Octaveの plot では,オプションによって様々な色,ラインの種類,マーカーを指定できます.オプションの指定の仕方は次の通りです.

37

Page 4: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

第 4章 データをプロットしてみよう

POINT plot の使い方 グラフを 1つ表示する場合:

plot(X軸, Y 軸, ’オプション’)

複数のグラフを表示する場合:

plot(X1軸, Y1軸, ’オプション’, X2軸, Y2軸, ’オプション’, ...)

オプションは指定しなくてもかまいません.

MATLABとOctaveではオプションが異なりますので,別々に説明します.

4.3.1 MATLABのプロットのオプション

MATLABでの色,ラインの種類,マーカーのオプションをそれぞれ表4.1,表 4.2,表 4.3に示します.MATLABではこれらのオプションをどのような順序で書いてもかまいません.例を挙げて説明します.ラインの種類を dotted にして green でプロッ

トする場合には,以下のように色のオプション(g)とラインの種類のオプション(:)を書きます.

>> plot(x,y,’g:’)

なお,ラインの種類は solid がデフォルトになっているので,solid を選択する場合はオプション(-)を省略することもできます.マーカーを正方形にして cyan でプロットする場合には,以下のように

色のオプション(c)とマーカーのオプション(s)を書きます.マーカーとマーカーの間がラインで結ばれないことに注意してください.

>> plot(x,y,’cs’)

マーカーとマーカーの間をラインで結びたいときには,以下のようにラインの種類(例えば -.)も指定します.この実行結果にグリッドラインを表示させたものを図 4.2に示します.

>> plot(x,y,’cs-.’)

♣ TRY 複数のグラフを別々の色,ラインの種類,マーカーで表示してみよう.

38

Page 5: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

4.3. 多彩なラインとマーカー

表 4.1: ラインやマーカーの色(MATLAB)オプション 色 オプション 色

y yellow g greenm magenta b bluec cyan w whiter red k black

表 4.2: ラインの種類(MATLAB)オプション ラインの種類

- solid (デフォルト): dotted-. dashdot-- dashed

表 4.3: マーカー(MATLAB)オプション マーカー オプション マーカー

. • v o ^ x × < <+ + > >* ∗ p s 4角形 h 6角形d

−5 −4 −3 −2 −1 0 1 2 3 4 5−10

−8

−6

−4

−2

0

2

4

6

8

10

図 4.2: x=-5:5; y=2*x; plot(x,y,’cs-.’); grid onの実行結果.

39

Page 6: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

第 4章 データをプロットしてみよう

4.3.2 Octaveのプロットのオプション

Octaveでの色,スタイル,マーカーのオプションをそれぞれ表 4.4,表4.5,表 4.6に示します.例を挙げて説明します.dots plot style にして green でプロットする場

合には,以下のように色のオプション(g)とラインの種類のオプション(.)を書きます.なお,スタイルは lines plot style がデフォルトになっているので,このスタイルの場合はオプション(-)を省略することもできます.

octave:1> x=-5:5; y=2*x;

octave:2> plot(x,y,’g.’)

表4.4にあるように,数字でも色を指定できます.上の例では plot(x,y,’2.’)

としても同じグラフが得られます.マーカーを正方形にして cyan でプロットする場合には,以下のように

色のオプション(c)とマーカーのオプション(3)を書きます.色とマーカのいずれかあるいは両方を数字で指定するときには,必ず色のオプションを先にします.

octave:3> plot(x,y,’c3’)

これは数字だけを使って plot(x,y,’53’) と指定することもできます.上のオプションではマーカーとマーカーの間がラインで結ばれません

が,ラインで結びたいときには,linespoints plot style(-@)を用います.次の例では,dots plot styleでマーカー間をつないでいます.

octave:4> plot(x,y,’c3-@.’)

なお,Octaveには gnuplotライクな gplotOCT を使ってプロットする方法もありますが,本書では説明しません.Octaveのオンラインヘルプや文献1を参照してください.

表 4.4: ラインやマーカーの色(Octave)オプション 色 オプション 色1 または r red 4 または m magenta2 または g green 5 または c cyan3 または b blue 6 または w brown

1川原稔, “gnuplot パーフェクト・マニュアル”, ソフトバンク (1999).

40

Page 7: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

4.4. ラベルとタイトル

表 4.5: スタイル(Octave)オプション スタイル

- lines plot style (デフォルト). dots plot style@ points plot style-@ linespoints plot style^ impulses plot plot styleL steps plot style

表 4.6: マーカー(Octave)オプション マーカー オプション マーカー1 または o 4 または x ×2 または + + 5 3 4角形 6 または * ∗

♣ TRY 複数のグラフを別々の色,スタイル,マーカーで表示してみよう.

Tips しましまのライン plot(x,y,’r+-’) を実行すると,マーカーの色とラインの色

とが同じ色でプロットされます.しかし,マーカーの色とラインの色とを別の色にしたいときもあるのではないでしょうか. そのような場合には,plot(x,y,’r+’,x,y,’b-’) というように同じデータを別々の色で 2 度プロットします.これを応用するとplot(x,y,’r+’,x,y,’b-’,x,y,’y--’)なんてこともできますが,実用性はないでしょうね…

4.4 ラベルとタイトル

さて,プロットできたら次はX軸と Y 軸にラベル(label)を付けたり,タイトル(title)を付けたりしましょう.いつまでも 1次関数では芸がないので,y = sin(ω) を使ってみましょう.角度はラジアンで指定します.ここでは π

10 きざみで sinの値を求めます.

>> omega=0:pi/10:4*pi;

>> plot(omega,sin(omega))

X 軸と Y 軸にラベルを付けるには,ラベルの文字列を引数にしてそれぞれ xlabel と ylabel を実行します.タイトルを付けるには title を

41

Page 8: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

第 4章 データをプロットしてみよう

使います.UNIX版MATLABではラベルやタイトルに日本語の文字を使えませんが,Windows版MATLABでは使えます.

>> xlabel(’omega [rad]’); ylabel(’y’)

>> title(’sin(omega)’)

MATLABではラベルやタイトルの文字列の中で LATEXの数式の表記方法の一部が使えます2.これを使うと複雑な数式を表現することができます.LATEXの数式で使えるシンボルについて表 4.7と表 4.8にまとめました.上の例でも ω や ≤ や π が表示されて見栄えが良くなります.このよ

うにしてラベルとタイトルを付けた y = sin(ω) のグラフを図 4.3 に示します.

>> xlabel(’\omega [rad]’); ylabel(’y’)

>> title(’sin(\omega) (0 \leq \omega \leq 4\pi)’)

0 2 4 6 8 10 12 14−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1sin(ω) (0 ≤ ω ≤ 4π)

y

ω [rad]

図 4.3: ラベルとタイトルを付けたグラフ.

Octaveでは 4.2節で説明した grid と同じように,ラベルやタイトルの文字列を指定した後に再度プロットしなければそれらが表示されません.

4.5 凡例

複数のラインをプロットしたときには凡例も付けたいところです.Octaveでは自動的に凡例を表示しますが,MATLABでは legendMAT コマンドを

2Octaveにこの機能はありません.

42

Page 9: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

4.5. 凡例

表 4.7: MATLABで使える LATEXのシンボル(ギリシャ文字編)α \alpha β \beta γ \gamma δ \deltaε \epsilon ζ \zeta η \eta θ \thetaϑ \vartheta ι \iota κ \kappa λ \lambdaµ \mu ν \nu ξ \xi π \piρ \rho σ \sigma ς \varsigma τ \tauυ \upsilon φ \phi χ \chi ψ \psiω \omega Γ \Gamma ∆ \Delta Θ \ThetaΛ \Lambda Ξ \Xi Π \Pi Σ \SigmaΥ \Upsilon Φ \hi Ψ \Psi Ω \Omega \varpi

表 4.8: MATLABで使える LATEXのシンボル(数学記号編)≡ \equiv = \neq ∼= \cong ≈ \approx⊕ \oplus ⊗ \otimes \oslash ∫ \int∩ \cap ⊃ \supset ∪ \cup ∞ \infty⊇ \supseteq ⊃ \supset ⊆ \subseteq ⊂ \subset \rfloor \lfloor \rceil \lceil〈 \langle 〉 \rangle \circ • \bullet← \leftarrow ↑ \uparrow → \rightarrow ↓ \downarrow♦ \diamondsuit♥ \heartsuit ♠ \spadesuit ♣ \clubsuit≤ \leq ≥ \geq % \Re & \Im× \times ÷ \div ± \pm c© \copyright∧ \wedge ∨ \vee ∈ \in * \ni∀ \forall ∃ \exists · \cdots . . . \ldots⊥ \perp ∼= \cong ¬ \neg √ \surd∼ \sim ∂ \partial ℵ \aleph ℘ \wpø \o ∇ \nabla ′ \prime Ø \O| \mid ↔ \leftrightarrow

43

Page 10: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

第 4章 データをプロットしてみよう

用いて表示させます.legendMAT の引数として各グラフの凡例の文字列を順に書きます.y = sin(ω) と y = cos(ω) のグラフをプロットして,凡例を表示させて

みましょう.凡例でも LATEXの数式の表記方法が使えます.凡例を付けたグラフを図 4.4に示します.

>> omega=0:pi/10:4*pi;

>> plot(omega,sin(omega),’b’,omega,cos(omega),’r--’);

>> legend(’sin(\omega)’,’cos(\omega)’);

0 2 4 6 8 10 12 14−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1sin(ω) (0 ≤ ω ≤ 4π)

y

ω [rad]

sin(ω)cos(ω)

図 4.4: 凡例を付けたグラフ.

凡例を消去するときには legend off を実行します.

4.6 グラフの追加

1度プロットしたグラフに後から新たなラインを追加したい場合にはhold を使います.引数に新たなデータを追加して plot を実行すれば複数のグラフを表示することはできますが,それ以前に設定したラベルやタイトルや凡例が消えてしまいますが,hold を使えばそれらが保存されます.

POINT グラフの追加 hold を使ってグラフをホールドしておけば,ラベルやタイトルや

凡例を保持して新たなグラフを追加することができます.

44

Page 11: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

4.7. 表示範囲の指定

hold の使い方は grid と同じです.つまり,hold on を実行するとグラフがホールドされ,hold off を実行するとホールドが解除されます.ただし,Octaveでは grid と違って on と off にダブルクォートが必要なく,MATLABと同じ使い方になりますので注意してください.hold だけを実行すると,ホールド状態がトグルされます.つまり,グラフがホールドされていない状態で grid を実行するとホールドされ,もう 1度 hold を実行すると解除されます.hold を利用して,y = sin(ω) と y = cos(ω) のグラフをプロットしてみましょう.

>> omega=0:pi/10:4*pi;

>> plot(omega,sin(omega),’b’)

>> hold on

>> plot(omega,cos(omega),’r--’)

グラフを消去するときには,MATLABでは clfMAT(CLear current Fig-ure),Octaveでは clearplotOCT を実行しますが,これらのコマンドを実行してもホールド状態は保持されます.

♣ TRY 図 4.4に y = sin(ω + π5 ) のグラフを追加してみよう.凡例も追

加してみよう.

4.7 表示範囲の指定

図 4.4のグラフはグラフの左側が中途半端に切れてしまっています.できればきれいに納めたいところです.Y 軸の上下に少し余裕があってもよいかもしれません.このようにグラフの表示範囲を指定する場合には,axis を用います.まず,図 4.4の現在の表示範囲を調べます.

>> axis

ans =

0 14 -1 1

X 軸の最小値,X の最大値,Y 軸の最小値,Y の最大値の順序で表示されます.表示範囲を指定するときには引数をこの順序で与えます.図 4.4のグラフを 0 ≤ ω ≤ 4π,−1.5 ≤ y ≤ 1.5の範囲で表示し直すには以下のコマンドを実行します.

>> axis([0 4*pi -1.5 1.5]);

45

Page 12: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

第 4章 データをプロットしてみよう

0 2 4 6 8 10 12−1.5

−1

−0.5

0

0.5

1

1.5sin(ω) (0 ≤ ω ≤ 4π)

y

ω [rad]

sin(ω)cos(ω)

図 4.5: axis([0 4*pi -1.5 1.5]) で表示範囲を調整したグラフ.

これにより,図 4.5のグラフが得られます.

4.8 フィギュアウィンドウの作成

フィギュアウィンドウは複数作ることができます.figureを実行すると,新たなフィギュアウィンドウが現れます.フィギュアウィンドウには作られた順番に図番号が付けられており,それがタイトルのところに “FigureNo. 2” のように表示されます.新たなフィギュアウィンドウを作って,y = x2 + 5 (−10 ≤ x ≤ 10)の

グラフをプロットしてみます.

>> x=-10:10;

>> figure; plot(x,x.ˆ2+5)

過去に作ったフィギュアウィンドウ上のグラフに操作を加える場合には,そのフィギュアウィンドウを図番号で指定してからコマンドを実行します.フィギュアウィンドウを指定するには,図番号を引数にして figure を実行します.例えば,1番目のフィギュアウィンドウ上のグラフに別のグラフを追加

する場合には次のようにします.

>> figure(1)

>> hold on; plot(x2,y2,’g:’)

46

Page 13: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

4.9. フィギュアウィンドウの分割

上の説明で「図番号」と呼んでいるものは,正確には図のハンドラ(han-dler)と言います.現在指定されている図のハンドラは gcfMAT(Get Cur-rent Figure)で知ることができます.

>> gcf

ans =

1

この場合,現在指定されているのは “Figure No. 1” とタイトルのついた,つまりハンドラが 1のフィギュアウィンドウであることがわかります.

♣ TRY figure で新たなフィギュアウィンドウを作ったとき,指定されているフィギュアウィンドウがどれか調べてみよう.

4.9 フィギュアウィンドウの分割

前節ではグラフを増やす際に新たなフィギュアウィンドウを作る方法を説明しました.ここでは,フィギュアウィンドウを分割して複数の座標軸を作り,そこにグラフをプロットする方法を説明します.それぞれの座標軸にラベルやタイトルや凡例を付けることができます.

POINT フィギュアウィンドウの分割 subplot を使ってフィギュアウィンドウを分割し複数の座標軸を

作ることができます.縦方向の分割数m,横方向の分割数 n,座標軸の番号 kを引数にします.

subplot(mnk) または subplot(m,n,k)

subplot(421) または subplot(4,2,1) は縦に 4分割,横に 2 分割したフィギュアウィンドウの 1番目の座標軸です.フィギュアウィンドウの座標軸の番号の順番については図 4.6を参考にして下さい.プロットする場合には,subplotで座標軸を指定してから plotを実行します.次の例では,フィギュアウィンドウを縦 2段に分割し,それぞれの座標軸にプロットしています.そして,下の座標軸にプロットした後,再び上の座標軸を指定して,ラベルとタイトルを付けています.

>> subplot(211); plot(x1,y1)

>> subplot(212); plot(x2,y2)

>> subplot(211)

>> xlabel(’x’); ylabel(’y’); title(’1st plot’)

47

Page 14: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

第 4章 データをプロットしてみよう

図 4.6: 縦 4分割,横 2分割した場合の座標軸の番号.左上が最小値で右下が最大値になる.つまり,左上は subplot(421),右下は subplot(428)

で指定する.

grid ,hold ,axis などは座標軸ごとに状態が決まります.ある座標軸でグラフをホールドしたからといって,その他の座標でホールドされているわけではないので注意が必要です.

MATLABには指定した座標軸のグラフを消去する claMAT(CLear cur-rent Axis)があります.先に紹介した clfMAT を使うとフィギュアウィンドウ上の全てのグラフが消えてしまうのでこれも注意が必要です.例えば,縦に 2分割した 1つ目(上)の座標軸のグラフを消去する場合には,次のように subplot で座標軸を指定してから clfMAT を実行します.

>> subplot(211)

>> cla

♣ TRY フィギュアウィンドウを縦 3分割し,それぞれにグラフをプロットしてみよう.次に,X 軸と Y 軸にラベルを付け,タイトルも付けてみよう.

48

Page 15: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

4.10. グラフの印刷

Tips 大きさの異なる座標の混在 フィギュアウィンドウを縦 2分割し,下の段はさらに横に 2分割することもできます.

>> subplot(211); plot(x1,y1)

>> subplot(223); plot(x2,y2)

>> subplot(224); plot(x3,y3)

これを応用すれば様々な大きさの座標を混在させることができますが,見る人のことを考えてほどほどにしましょう.

4.10 グラフの印刷

フィギュアウィンドウの印刷には print を使います.フィギュアウィンドウが subplot により分割されている場合は,そのフィギュアウィンドウ上の全てのグラフが印刷されます.

4.10.1 UNIX版MATLABでの印刷

オプションなしで print を実行すると現在指定されているフィギュアウィンドウがデフォルトのプリンタに出力されます.UNIX版MATLABでの print のオプションを表 4.9 に示します.

表 4.9: UNIX版MATLABの print のオプションオプション 機能なし デフォルトのプリンタに出力する.-Pプリンタ 指定したプリンタに出力する.-fハンドラ 指定したハンドラを持つフィギュアウィンドウを印刷する.

ハンドラ 2のフィギュアウィンドウを lp1というプリンタに出力する場合には,以下のようにします.

>> print -Plp1 -f2

-P とプリンタ名の間および -f とハンドラの間にスペースは入りません.GUIによる操作でも印刷できます.フィギュアウィンドウのFileメニューからPrintを選択するか,フィギュアウィンドウの ツールバー(toolbar)のプリンタのボタン(図 4.7)をクリックすると図 4.8の Printダイアログが現れます.

49

Page 16: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

第 4章 データをプロットしてみよう

図 4.7: フィギュアウィンドウのツールバー.丸で囲んであるのは印刷するボタン.

図 4.8: Printダイアログ.

Printダイアログで設定できる項目を表 4.10にまとめます.各項目を適宜設定した後,Printボタンをクリックすると印刷されます.

表 4.10: Printダイアログで設定できる項目.項目 説明

Paper type 用紙サイズPaper orientation 印刷の向きPrinter プリンタ(空欄の場合はデフォルトのプリンタ)Device option 印刷のオプションSend to 出力先(プリンタ/ファイル)

出力先として Fileを指定すると,Printボタンが Saveボタンに変わります.それをクリックすると保存するファイル名を指定するダイアログが現れますので,ファイル名を入力します.

Page Setupボタンをクリックするか,もしくは Fileメニューの PageSetupを選択すると,図 4.9の Page Setupダイアログが現れます.

FileメニューのPrint Previewを選択すると,印刷前に出力の様子を確認することができます.

50

Page 17: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

4.10. グラフの印刷

図 4.9: Page Setupダイアログ.

表 4.11: Page Setupダイアログで設定できる項目.項目 説明

Orientation 印刷の向きLimits 軸と目盛りをスクリーンの表示と一致させるか否かColor モノクロまたはカラーSize and Position 印刷の位置と大きさ

4.10.2 Windows版MATLABでの印刷

UNIX版MATLABと同じように,オプションなしで print を実行すると現在指定されているフィギュアウィンドウがデフォルトのプリンタに出力されます.Windows版MATLABでの printのオプションを表 4.12に示します.Windows版でもUNIX版のようにGUIによる印刷ができますが,UNIX版とほとんど同じなので説明は省きます.

表 4.12: Windows版MATLABの print のオプション

オプション 機能なし デフォルトのプリンタに出力する.-dwin デフォルトのモノクロプリンタに出力する.-dwinc デフォルトのカラープリンタに出力する.-dsetup プリンタ設定ダイアログを表示する.-fハンドラ 指定したハンドラを持つフィギュアウィンドウをプリントする.

51

Page 18: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

第 4章 データをプロットしてみよう

4.10.3 Octaveでの印刷

gsetOCT と replotOCT を使います.グラフを PostScript(PS)プリンタに出力する場合には(ghostscriptを利用しする場合も含みます),gsetOCT

で terminalを postscript に設定します.次に,パイプを使って出力先をUNIXの lpr に出力するよう設定してから,replotOCT を実行します.

octave:5> gset terminal postscript

octave:6> gset output "| lpr"

octave:7> replot

次のグラフの出力先を Xウィンドウ上に戻すには,terminalを x11に設定します.

octave:8> gset terminal x11

octave:9> gset output

gshowOCT を使うと,現在の terminalの設定を知ることができます.次の例では terminalが x11に設定されていることがわかります.

octave:10> gshow ’terminal’

terminal type is x11 0

gsetOCT と gshowOCT は,gnuplot の set と show に対応しています.ここではPSプリンタへの出力についてのみ説明しましたが,その他に

も対応しているプリンタがあります.それについては,gnuplotの set のオンラインヘルプや文献を参照してください.

4.11 グラフの保存

4.11.1 MATLABでのグラフの保存

グラフを保存する場合にも print を使います.

POINT MATLABでのグラフの保存 print -d画像フォーマット ’ファイル名’

MATLABで保存できる代表的な画像フォーマットを表 4.13に示します.印刷のときと同様に -f オプションでフィギュアウィンドウを指定することができます.この表にない画像フォーマットについては,print の

52

Page 19: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

4.11. グラフの保存

オンラインヘルプや文献を参照してください.4.10.1節に説明したようにGUIででもグラフの保存ができますが,そのときにもこの表のオプションが使えます.

表 4.13: print のオプションオプション 画像フォーマット-dps モノクロ PostScipt(PS)-dpsc カラー PS-dps2 レベル 2モノクロ PS-dpsc2 レベル 2カラー PS-deps モノクロ Encapsulated PostScript(EPS)-depsc カラー EPS-deps2 レベル 2モノクロ EPS-depsc2 レベル 2カラー EPS-djpegnn JPEG(nnはクオリティレベル)-dtiff TIFF-dmeta Metafile(Windows のみ)-dbitmap bitmap(Windows のみ)-dmfile そのグラフをプロットするためのデータと

プログラムを保存する.

graph01.epsというファイル名でレベル1のモノクロ Encapsulated PostScript(EPS)フォーマットで保存する場合には以下のようにします.

>> print -deps ’graph01.eps’

EPSファイルは LATEXなどに取り込むことができます.ファイル名は文字列変数として与えることもできます.

>> fname = ’graph02.eps’;

>> print -deps fname

-dmeta オプションと -dbitmap オプションはWindowsでのみ使えます.これらのオプションはその他のオプションと同じ print -dbitmap

’graph03.bmp’ という使い方の他にもう 1つの使い方があります.それは,グラフをそのフォーマットでクリップボードに渡し,それを他のアプリケーションで利用するというものです.この場合,以下のようにファイル名を指定せずに print を実行します.

>> print -dmeta

そして,Microsoft Word や Microsoft PowerPoint などの文書にペースト(貼り付け)すればMATLABで作成したグラフをそれらのアプリケー

53

Page 20: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

第 4章 データをプロットしてみよう

ションで利用することができます.ペイントソフトなどで加工することもできます.-dmfileオプションは他のオプションと違い,グラフを画像データとし

て保存するものではありません.そのグラフを作るためのデータ(MATファイル)とそのデータを利用してプロットするプログラム(Mファイル)を保存します.このオプションを使う利点は,1度保存したグラフを開いてグラフを追加したりラベルやタイトルを追加したりという操作ができるということです.次のコマンドを実行すると,graph04.matと graph04.mというファイ

ルができます.

>> print -dmfile graph04

グラフを再現したいときには次のコマンドを実行します.

>> graph04

これは,一旦MATLABを終了した後,再度MATLABを起動した後でも有効です.

54

Page 21: 第4章 データをプロットしてみよう - 甲南大学...第4章 データをプロットしてみよう 4.1 1次関数のプロット まずは1次関数y =2x のグラフをプロットしてみましょう.xの範囲

4.11. グラフの保存

4.11.2 Octaveでのグラフの保存

グラフを保存する場合にも gsetOCT と replotOCT とを使います.PSフォーマットで保存するときには,まず terminalを postscriptに設定します.次に,出力先のファイル名を指定し,replotOCT を実行します.

octave:11> gset terminal postscript

octave:12> gset output "graph04.ps"

octave:13> replot

EPSフォーマットで保存するときには,terminalを postscriptに設定し,さらにそのオプションとして epsを指定します.postscriptにはこの他にも,カラー/モノクロの指定,フォントの指定などのオプションがあります.詳しくは,gnuplot の set のオンラインヘルプや文献を参照してください.フォーマットおよびそのオプションを設定したら,出力先のファイル名を指定し,replotOCT を実行します.

octave:14> gset terminal postscript eps

octave:15> gset output "graph04.eps"

octave:16> replot

次のグラフをプロットするために出力先をXウィンドウ上に戻すには,terminal を x11に設定します.

octave:17> gset terminal x11

octave:18> gset output

gnuplotでは,PSと EPSの他にGIFや Tgifなどの画像フォーマットでも出力できます.さらに,グラフを LATEXの picture環境で出力することもできます.詳しくは gnuplot の set のオンラインヘルプや文献を参照してください.

55