連載
» 2014年02月28日 11時00分 UPDATE

無償ソフトで技術計算しよう【グラフィックス編】(1):無償の工学計算ソフト「FreeMat」でグラフを描いてみよう (1/3)

「グラフィックス編」では、FreeMatを使ったグラフの描き方を覚えよう。第1回は、その基本となる2次元グラフの作成から。

[伊藤孝宏,MONOist]

 無償の工学計算ソフトウェア「FreeMat」のインストールや使い方の基本については、「無償ソフトで技術計算しよう【入門編】」で解説しました。FreeMatは3次元のグラフも簡単に作成できます。この【グラフィックス編】では、「2次元グラフの作成」「グラフの修飾」「3次元グラフの作成」と3回にわたって、グラフの作成方法について解説します。第1回は、グラフ作成の基本である、2次元グラフの作成について説明します。

yk_FreeMat_g01_00.jpg 3次元グラフ

筆者注:FreeMatはコマンド入力後にエンターキーを押すとコマンドを実行します。本連載ではエンターキーの記述を省略しますが、操作の際にはコマンド入力後にエンターキーが必要です。



グラフプロット

 最も簡単なグラフプロットはplot(データ)とするだけです。例えば、plot(randperm(10))とすると、図1のような要素を順にプロットしたグラフウィンドウが現れます。

yk_FreeMat_g01_01.jpg 図1 グラフウィンドウ

 randperm(n)はnまでの自然数をランダムシャッフルした結果を返します。図1はランダムシャッフルの結果のため、同じ操作をしても図1のようになるとは限りません。

 結果を画像として保存するには、フロッピーマークのアイコンをクリックするか、「File→Save」として、画像ファイルに保存します。画像ファイルの形式は、BMP、JPGなどが選べます。

 図1のようなグラフウィンドウそのものを画像として保存するには、左から3番目のアイコンをクリックするか、「Tools→Copy」としてから、Paintなどの画像ソフトに貼り付けます。左から4番目のアイコンはズームボタンで、アイコンをクリックして、マウス左クリックごとに2倍に拡大されます。また、マウス右クリックごとに1/2に縮小されます。ズームは「Tools→Zoom」でも可能です。

 左から5番目のパンアイコンは表示範囲を移動させます。アイコンをクリックするとカーソルが手のひらマークに変わるので、マウスを左ドラッグ(左ボタンを押したまま移動)すると、表示範囲が移動します。パンは「Tools→Pan」でも可能です。左から6番目、7番目の回転ボタンは3次元グラフで、グラフの回転、視点の回転を行うものです。右端のSampleアイコンについては、次回のグラフの修飾で説明します。グラフウィンドウを閉じるには、左から2番目の電源ボタンアイコンをクリックするか、「File→Close」とするか、ウィンドウ右上の×印をクリックします。

 plot(データ)は計算中の配列の要素を視覚的に確認できるため、動作を確認する場合などに便利です。

X-Yグラフ

 x-yグラフを得るには、2つの方法があります。1つは、plot(x,y)とします。例えば、plot(0:360,sind(0:360))とすると、図2のようなサインカーブが得られます。

yk_FreeMat_g01_02.jpg 図2 サインカーブ

 0:360は0〜360までの連続した配列を生成します。sindは角度が度単位でのサインを返します。図2はグラフウィンドウで保存ボタンをクリックあるいはFile→Saveにより、画像ファイルとして保存したものです。

 もう1つの方法は、plot(x+i*y)として、変数xを実数軸、変数yを虚数軸にして、プロットさせます。先の例で言えば、plot((0:360)+i*sind(0:360))とすると、図2と同じサインカーブが得られます。

 グリッドを入れる、グラフタイトルを入れる、縦軸・横軸の変数名の表示、縦軸・横軸のスケールを変えるといったグラフの修飾も可能です。グラフの修飾については、次回で説明します。

 複数のデータをプロットするには、2つの方法があります。1つはplot(x1,y1,x2,y2)とデータの対をカンマでつないで記載します。例えば、plot(0:360,sind(0:360),0:360,cosd(0:360))と入力すると、図3のようなサインとコサインのカーブが得られます。

yk_FreeMat_g01_03.jpg 図3 サインカーブ、コサインカーブ

 もう1つの方法は、hold('on')コマンドで、同じグラフに重ね描きさせる方法です。FreeMatはplotとするたびに前のグラフを削除して新しいグラフを描きます。

 例えば、x=randperm(10);plot(x);plot(sort(x))と入力すると、途中のランダムシャッフルされたグラフは削除され、ソートされたグラフが表示されます。ここで、hold('on')というコマンドをplotの間に入れると、重ね描きしてくれます。先ほどの例で言えば、x=randperm(10);plot(x);hold('on');plot(sort(x)) で、図4のようになります。

yk_FreeMat_g01_04.jpg 図4 hold('on')による重ね描き

 重ね描きを解除するには、hold('off')と入力します。なお、今までの例は、セミコロンでつなぎ、1行に記載していますが、1つずつ入力しても構いません。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.