<?xml version="1.0" encoding="iso-2022-jp" ?>
<!DOCTYPE html 
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-2022-jp" />
<title>Untitled</title>
<link href="css.css" type="text/css" rel="stylesheet" />
</head>
<body>
<h1><a name="label-0" id="label-0">Ruby/PGPLOT 導入編</a></h1><!-- RDLabel: "Ruby/PGPLOT 導入編" -->
<h2><a name="label-1" id="label-1">折れ線グラフを描く</a></h2><!-- RDLabel: "折れ線グラフを描く" -->
<p>Ruby/PGPLOTで折れ線グラフを描く最小限のスクリプトは、以下のようになります。</p>
<pre>require 'narray'
require 'pgplot'
include Pgplot
pgopen                           # デバイスを開く
pgenv( 0, 5, 0, 5 )              # 枠の設定と描画
pgline( [1,2,3,4], [1,4,1,4] )   # 折れ線の描画</pre>
<p>以下このスクリプトについて詳しく説明します。
1行目、2行目で拡張ライブラリをロードします。</p>
<p>3行目では Pgplotモジュールをインクルードしています。
これをしないと Pgplotのメソッドを呼ぶとき、``Pgplot.pgopen'' というように
モジュール名をメソッドの前に省略しないで書かなければなりません。
インクルードするかどうかは場合によります。
Pgplotモジュールのメソッド名は(今のところ)皆 ``pg'' で始まっているので、
気をつければ名前がぶつかる確率は低いと思いますが、
確実を期すならインクルードしない方がよいかもしれません。</p>
<p>4行目の pgopen で PGPLOT のグラフィクスデバイスを開きます。
ここで引数を書かないと使用するデバイスを聞いてきます。</p>
<pre>Graphics device/type (? to see list, default /xwin):</pre>
<p>デフォルトのままで良ければ単にリターンキーを押します。
デフォルトのデバイスは環境変数 PGPLOT_DEV で設定したものになっています。
`?'とリターンを打ち込むと、使用できるデバイスの一覧が表示されるので、
その中から別のデバイスを選択することもできます。
例えば、PNGとしてファイルに書き出したいときは、
``plot1.png/png'' のように「ファイル名/デバイス名」というように指定します。</p>
<p>5行目の</p>
<pre>pgenv( 0, 5, 0, 5 )</pre>
<p>により、グラフの軸を決定し、枠と目盛を描画します。
引数は x-min, x-max, y-min, y-max の順です。
ここではX軸が0から5、Y軸が0から5までの範囲の枠を描きます。
以降はここで設定された座標をもとに描画します。</p>
<p>そしていよいよ、6行目の</p>
<pre>pgline( [1,2,3,4], [1,4,1,4] )</pre>
<p>で、折れ線グラフを描きます。
引数には線を結ぶ点のX座標とY座標をそれぞれ配列で渡します。</p>
<p>ここまで成功すれば、このようなグラフが描かれているはずです。</p>
<p><img src="plot1.png" alt="plot1.png"/></p>

<p>以上が折れ線グラフを描くのに最低限必要なメソッドです。</p>
<p>ところで、このスクリプトにはデバイスを閉じるメソッドがありません。
CかFORTRAN版のPGPLOTであれば、
ここで最後に pgend を呼んでデバイスを閉じる必要があります。
そうしないと、デバイスが Postscript などのとき、
終了処理がされないので、不完全なファイルができてしまいます。
しかし Ruby/PGPLOTでは、Rubyインタプリタ終了時に
pgend を自動的に呼ぶようになっているので、
必ずしも最後に pgend を呼ぶ必要はありません。
ただしRubyの実行途中でPGPLOTを終了したいときのために
Ruby版でも pgend メソッドは用意してあります。</p>
<p>以下続く(かもしれない)</p>
<hr/>
<a href="./">Ruby/PGPLOT</a>
by Masahiro Tanaka


</body>
</html>
