3. Matlab Graphics
(1) 2次元図形
図形の描画については,テキストに丁寧に書かれています。テキストpp.66〜73を
熟読し,掲載されているサンプル・プログラムを実際に打ち込んで,実行してみましょう。
以下では,テキストの補足的な事項についてのみ,説明します。
plot文
plot文は,2次元図形描画の基本です。必ず使い方をマスターしてください。
下記は,xとyにデータが与えられている場合を仮定した,plot文の一般的な
書き方の一例です。
plot(x,y,LineSpec,'LineWidth',lw) |
@LineSpecの部分では,線の仕様を指定します。
'-r+'や'bo'のようにラインスタイルの3成分(テキストp.67表4.2)
の両端をシングル・クォート’で挟むことを忘れないでください。
A'LineWidth',lwの部分では,線の太さを指定します。
lwの代わりに具体的な線幅のポイント数を指定します。
'LineWidth', については,そのまま記述します。大文字,小文字
についても上の通りとしてください。
@,Aとも既定値でよいならば,x,yの次のカンマ以降を省略します。
通常,plot文の前にfigure文,clf文を置きます。
figure(1) 図番号1のウィンドウを使うことの宣言。既定値の図番号は1。
clf カレントfigureの消去
具体例
figure(2) clf plot(x,y,'-r+','LineWidth',1) |
複数グラフの重ね書き: @plot文を繰り返して記述する場合には,plot文が
hold
on とhold offの内側に来る(即ち,重ね書きする前に
hold
on を実行,重ね書きを終えたらhold offを実行)ように
します。
hold on
plot文
hold off
Aplot文1行で書くこともできます。テキストp.66表4.1を参照
グラフ内の格子線描画: グラフ内に縦軸,横軸の目盛りと一致した格子線を描くには,
grid on を使います。
プログラム内にgrid
on を入れても,プログラム内に入れなくて実行後に
コマンド・ウインドウからgrid
on を実行しても,どちらでも可です。
テキストp.69プログラム・リスト4.2の別解
plot文の中での論理値の使い方が分かりづらいので,以下に別解のプログラムを
示します。
% p.69 program-list4.2
x=linspace(0,3*pi,100);
y=sin(x);
figure(1)
clf
hold on
for ii=1:100
if abs(y(ii))>0.5
plot(x(ii),y(ii),'bo')
else
plot(x(ii),y(ii),'r+')
end
end
hold off
グラフの装飾
プログラムを実行すると,上のグラフが表示されます。
グラフの表題,x軸ラベル,y軸ラベルを記入したい場合には,2つの対応法があります。
@プログラム内で指示する場合
plot文の後ろ,hold off の前に以下の3行を入れてください。
title('sin-curve')
xlabel('x (radian)')
ylabel('y')
Aプログラム実行後に「編集」機能を使う場合
figure window のメニューバーの編集をクリックして,「Axesプロパティ」を選択すると,
次画面が表示されます。「スタイル」タグでグラフの表題を,「X」タグでxlabelを,同様に
「Y」タグでylabelを指定します。フォントやフォントサイズを指定することも出来ます。
次に示すツールバーも有効に活用してください。
↑ ↑ ↑ ↑ ↑ ↑ ↑
@ A B C D E F
@プロットの編集:編集したい所,例えばタイトル,にマウスを近づけクリックすると,
ハンドルが付き選択されたことが分かります。
そこで,右クリックするとショートカットメニューが表示されます。
Aテキストの挿入:グラフ内にグラフを描いた後で文字を挿入。
B矢印の挿入:グラフ内にグラフを描いた後で矢印を挿入。
Cラインの挿入:直線を挿入。
Dズームイン:グラフの一部を拡大。ドラッグで範囲を囲む,または拡大したい中心で
クリック。
Eズームアウト:グラフの縮小。
F3−D回転:立体グラフを回転させて視点を変えることができます。
テキストp.70の表4.3にあるtext文,gtext文,legend文も使えると便利です。
さらに,p.70のプログラム・リスト4.3を参照して,p.71の表4.4,p.72の表4.5
(ギリシャ文字,数学記号)を使いこなせると,殆どの要求を満たすグラフを記述
できます。
legend文の例題
以下の例題は,legendのhelpに示されている例題です。helpの画面から1行づつ
カットしてCommand Windowにペーストし実行すると,途中経過を順に確認でき,
夫々の文の意味するところが分かり易くなります。
例題 1
x = 0:.2:12;
plot(x,bessel(1,x),x,bessel(2,x),x,bessel(3,x));
legend('First','Second','Third');
legend('First','Second','Third',-1)
例題 2
b = bar(rand(10,5),'stacked');
colormap(summer); hold on
x = plot(1:10,5*rand(10,1),'marker','square','markersize',12,...
'markeredgecolor','y','markerfacecolor',[.6
0 .6],...
'linestyle','-','color','r','linewidth',2);
hold off
legend([b,x],'Carrots','Peas','Peppers','Green
Beans',...
'Cucumbers','Eggplant')
plot文以外の2次元グラフ関数
テキストp.73を参照してください。
グラフのエクスポート
Matlabで描いたグラフをWordなどで作成する報告書,論文等に貼り付けたい場合には,
「ファイル」/「エクスポート」を選択し,保存形式を必要に応じて.jpgなどに指定し,保存先
を指定します。
グラフを保存しておく必要が無い場合には,「編集」/「Figureのコピー」でクリップボードに
格納して,他のソフトに「貼り付け」ることもできます。
一方,Word側では,「挿入」/「図」/「ファイルから」を選択して,保存先
を指定すると,Matlabで描いた図を貼り込むことができます。
(2)Figure Window,画面分割,座標軸の設定
Figure Window
Figure Windowとは,グラフや画像を表示するウィンドウです。ウィンドウの幅と高さは,
ディスプレイの解像度に依存し,実習室の場合1024×768ピクセルです。
・既定値のウィンドウサイズや後述の画面分割したウィンドウサイズでは,満足できる
表現とならない場合: 1024×768ピクセルの範囲内で任意の位置に任意のサイズ
で指定することができます。
(テキストp.86 プログラムリスト5.1参照)
scrsz=get(0,'ScreenSize'); scrsz(1)〜scrsz(4)にウィンドウの左縁,下縁,幅,
高さを読み込ませます。
figure('Position',[左縁 下縁 幅 高さ])
任意の左縁,下縁,幅,高さを指定します。
画面分割
関数subplotを用いて,ひとつのFigure
Windowを小さな複数のウィンドウに分割して,
グラフや画像を同時に表示することができます。
記述の一般形は,次の通りです。
subplot(m,n,p) |
m:行の画面分割数
n:列の画面分割数
p:分割画面の位置番号
位置番号は左上隅の画面を1として,右の列に進む程,
増すように,右端まできたら下の行にずれ,再び右隣に
ずれるに従い位置番号が増えるように定義されます。
座標軸の設定
axisコマンドを使用すると,座標軸の細かな設定が可能です。既定値のグラフでは
必ずしも意図したイメージに一致しない場合があります。axisコマンドを使いこなせると,
便利です。(テキストp.88表5.1,表5.2参照)
必要最小限,以下については覚えましょう。
axis([xmin,xmax,ymin,ymax,zmin,zmax]) x,y,z軸に表示されるデータ範囲の
最小値,最大値の指定(3次元プロット)。
2次元プロットの場合には,,zmin,zmaxを
省略。[
]の中は最小値,最大値の数値
を入れる。
axis square ウインドウ枠を正方形とする
axis equal 全ての軸方向の単位長さを等しくする
(横軸の1の長さと縦軸の1の長さを等しく見えるように設定)
座標軸のカスタマイズ〜 座標軸の目盛りの刻み間隔,座標軸の線幅などを既定値と
異なる指定とすることができます。
setコマンドを使いますが,詳細についてはテキストpp.89,90を
参照してください。
プログラミングのトップページへ戻る