主要記述 2000.11.2
最終更新 2003.5.30
私は 2 次元グラフを書く時は、ここ で配布している nsgraph を使うことが多いのですが、gnuplot の方が 便利な場合もあり、gnuplot も使っています。ここでは gnuplot に関する 情報を紹介します。
gnuplot ではギリシャ文字、日本語、数式、上付き下付き文字を 入れることが出来ません。 そこで、 千葉大学の山賀先生 がそれが可能になるよう拡張されました。 日本人が gnuplot を使う場合、山賀先生の作られたパッチを 当てるのが標準的であると思われます。 FreeBSD ではパッチが当たったパッケージが配布されています。
gnuplot の図を PostScript に落とした場合、 負の数を表す '-' 記号の長さが極端に短くなってしまいます ( ハイフンに なってしまう )。これは、 PostScript フォントである Courier, Helvetica において、'-' ( Ascii コード 番号 45 ) はハイフンだからです。 Courier, Helvetica など PostScript フォント ではコード番号 177 がマイナス記号に割り当てられているようです。 ゆえに、PostScript 出力時に '-' 記号のコードを 45 ---> 177 に 変換することにより、マイナス記号を表示することが出来ます。具体的には gnuplot+3.7.1 の場合、gnuplot-3.7.1/term/post.trm の 関数 PS_out_text の内容を以下のように 書き換え、gnuplot-3.7.1 ディレクトリで make します。なお、\261 は 8 進 数で 177 を表しています。
gnuplot> plot "datafile" のようにデータファイルを用意して描画する場合、 データファイル中の一部分を無視したい場合があります。
上の例では「行頭に "off" or 行内に "# off"」で読み飛ばしモードに入り、 「行頭に "on" or 行内に "# on"」で読み飛ばしモードを終了することに しています。
FreeBSD には ports という便利なシステムがあります。 /usr/ports/math/gnuplot+ で # make をすると 「ソースとパッチを取ってくる」→「パッチを当てる」→「コンパイルをする」 を自動的に行ってくれます。次に、# make install でインストール できます。そこで、「/usr/ports/math/gnuplot+ で make を実行」 →「上記の修正を行う」→「/usr/ports/math/gnuplot+/work/gnuplot-3.7.1 で make を実行」→「同じディレクトリで make install」という手順により、 上記の修正を行うことが出来ます。
入門者にも分かるように親切に書かれています。 TeX への取り込み方など実用的な使い方について の紹介もあります。2000/1 に改訂第 2 版が出て、大幅に内容が増強 されたようです。著者の大竹敢さんは上智大学理工学部の電気・電子 工学科の助手をされています。
gnuplot の機能を徹底的に詳しく解説した本です。リファレンス マニュアル的です。内容は、Unix User に 1998.10 〜 1999.5 に わたって連載された記事に加筆修正したものです。著者の 川原さんは京都大学大型計算機センターで助手をされています。
この本は読んだことがないので、内容は分かりません。
松田さんは Linux Japan で連載記事を書いておられるので、御存知の方も 多いでしょう。様々な情報があり、リンクも豊富です。
実戦的な多数のノウハウが画像つきで分かりやすく説明されています。
コマンドの詳しい解説が あります。トップページから「ドキュメント群」→「My Document」 →「GNUPLOT HOWTO」とたどると gnuplot の 解説にたどり着けます。さらに、 「3Dの処理(shadingなど)をしたい」というメニューの 下には gnuconv を使ったシェーディングの方法が紹介されて います。gnuconv については長岡技術科学大学の奥村さん が HP-UX 用の パッチ を公開されています。
学会発表では PowerPoint が事実上の標準となりつつ あります。Unix 上で研究をしている人も、発表だけは PowerPoint を使う必要があります。gnuplot のグラフを PowerPoint へ貼り付けるには、 Windows 版の gnuplot を使います。
グラフをクリップボードへ貼り付けるメニューは、ものすごく 分かりにくい場所にあります。ウィンドウの左上隅に 小さなアイコンがあります。このアイコンをクリックすると、 Options というメニューがあり、その中に copy to clipboard という メニューがあります。
gnuplot は Tgif の .obj 形式の出力を得ることが出来ますが、 idraw で編集可能な形式では出力できません。gnuplot が出力 する .obj 形式ファイルを idraw 形式に変換するフィルタ を書くことは容易ですが、pstoedit というコマンドもあります。 pstoedit は ここで 配布されており、FreeBSD では graphics/pstoedit に ports と して収録されています。Linux でもパッケージは ここ にあります。
上記の「私の微修正」を行わないデフォルトの gnuplot が作成する postscript ファイルでは '-' はハイフンとして 扱われます。つまり非常に短い '-' になります。 ところが、idraw では '-' はマイナスとして扱われます。 gnuplot の y 軸に付ける数字は右端を基準として 定義されているのに対して、idraw の文字列は全て 左端を基準としています。この変換時に '-' 文字の長さを pstoedit はハイフンとして扱うため、その結果、 y 軸に付ける数字が、 負の数の場合、負の数の位置が大幅に右にずれてしまいます。
set grid を定義して書いた点線は pstoedit を適用した直後の ファイルでは [1 1] という点線になっているのですが、一旦 iv-3.1 ベース の idraw で編集してセーブすると点線のパターンが [1 1 1 13] という奇怪な パターンになってしまいます。idraw で編集する 前に [1 1] を [2 2] ( idraw の点線のパターン ) に 変換してもダメです。これについては良くわかりません。
gnuplot を使う場合、結局はコマンドファイルを作り、そのコマンドファイル を % gnuplot command-file という形式で呼び出すことになると思います。 このとき「まずは X-Window に表示してみて、y を押した場合だけ プリンターに出す。」というようにすると便利です。そこで、私は このようなコマンドファイルの雛型 を 作っておき、それを この perl スクリプト を 使って呼び出すようにしています。
ただ、この方法では、X-Window での表示と PostScript の 出力でマーカーの形が変わってしまいます。これを一致させるには、 X-Window に表示する時に gs を使うしかありません。この場合、 このようなコマンドファイルの雛型 を作り、この perl スクリプトを使えばよろしい。 perl スクリプトから gs を呼び出していますが、gs の起動のたびに マウスをクリックするのが面倒な場合は、.Xdefaults に