gnuplot, OpenOffice 等のフリーウェアを使ってプレゼン用や論文用のグラフを作成する

(最初のアップロード:2010-11-23,更新 2010-12-01)

注意
 このページの記述に関して,保証はできません。自己責任でお使いください。

Windows ユーザーなので Windows 上のことを取り上げていますが, 他のプラットフォームでもアレンジで使用できるかも知れません(保証はできませんが)  


目次

  1. gnuplot,OpenOffice.orgを使うのはなぜか
  2. gnuplotを使ってグラフを作る
  3. サンプルデータと目的の図
  4. ビットマップ形式の画像を作成する
  5. ベクトル形式の画像を作成する
    1. gnuplot の emf のターミナルを使って作成する
    2. gnuplot の PostScript のターミナルを使って作成する
      1. PostScript ターミナルを使うのはなぜか
      2. 必要なアプリケーションをインストールする
      3. 画像を作成する
  6. 終わりに
  7. 謝辞

1. gnuplot,OpenOffice.orgを使うのはなぜか

プレゼンや論文のために見栄えのいいグラフを作成したいと思いませんか。

世の中には,Origin,Igor などの優れた科学技術用のプロットソフトが存在します。 しかし,これらのソフトは値段が高く,自由に手に入るとは言えません。

ここでは,自由に手に入る,無料の gnuplot で, きれいな科学技術用のグラフを作成する方法を説明します。 gnuplot 以外にもグラフ作成用の無料のソフトは存在します。 その中で gnuplot を取り上げるのは,長い歴史があり, 世界中に多くのユーザーがいて,ノウハウが蓄積されていることが気に入ったからです。

この文章を作る2ヶ月くらい前から本格的に OpenOffice.org を利用し始め, gnuplot で作ったグラフを OpenOffice.org で利用する方法を試行錯誤してきました。 最近,その方法にある程度のめどがたちましたので,文章にまとめました。

ここで使用するツールは,OpenOffice.org, gnuplot だけでなくその他の関連ツールもすべてフリーウェアです。 したがって,ここで紹介する方法は, だれでも自由に使用することができます。 グラフの仕上げや最終的な文書を作成する Office ソフトとして OpenOffice.org にこだわったのはそのためです。

私は,Windows ユーザーなので Windows 上のことを取り上げていますが, このページで紹介したツールは,すべてマルチプラットフォームのフリーソフトなので Unix や Mac でも,すこしアレンジすれば利用可能だと思います。

もちろん,OpenOffice.org も gnuplot も, その他の関連ツールも日々進化していくと思いますので, あなたがこの文章を読んでいるときには, そのままでは使えなくなっているかもしれません。 それでも,この拙文が少しでも皆様のお役にたてば幸いです。

top に戻る


2. gnuplotを使ってグラフを作る

gnuplot は,通常, スクリプトと呼ばれる描画のコマンド等を記述したファイルを利用してグラフを作成します。 「京都大学の米澤さんのHP」の「gnuplotのスクリプトとは」を読まれると スクリプトについてのわかりやすい説明があります。

スクリプトを使って gnuplot でグラフを作成するときの方針は, 大きく分けて2つあります。

  1. gnuplot のスクリプトでグラフ全体(グラフだけでなくタイトルなども)を作りこむ。
  2. gnuplot のスクリプトでは最小限のもの(グラフのみ)を作成し, タイトルなどは OpenOffice.org などで作りこむ。

この文書では後者の方針を採用しています。前者の方針でグラフを作る場合は、 先ほども紹介した。 「京都大学の米澤さんのHP」の「論文に使う図を作る」をご覧ください。 非常に参考になると思います。

後者の方針では,複雑なスクリプトを書かなくて済むため, 特に gnuplot の初心者にはわかりやすいと思います。

なお,gnuplot ではビットマップ形式とベクトル形式の画像を作ることができますので, 以下の2つの操作を説明しています。

  1. ビットマップ形式の画像を作成する(主にプレゼン用)
  2. ベクトル形式の画像を作成する(主に印刷物,学会要旨,論文用)

では,はじめましょう。

(参考となるリンク)
gnuplot については、以下のホームページ,掲示板が参考になります。
gnuplot の操作に困ったときにご覧ください。

top に戻る


3. サンプルデータと目的の図

使用するサンプルデータ

# Example.txt
# サンプルデータ '#’はコメントを意味し,それ以降無視される
# 1列目 周波数(kHz) , 2列目,3列目位相検波器の出力。
# プロットするのは周波数に対する 2列目と3列目のデータの
# 2乗和の平方根。
# このデータはローレンツ曲線でフィッテングできる。
2000.000000 	 -6.199000e-005 	 1.777500e-005 
4000.000000 	 -5.448000e-005 	 1.448500e-005 
6000.000000 	 -5.010500e-005 	 1.453000e-005 
8000.000000 	 -3.913500e-005 	 1.261000e-005 
10000.000000 	 -3.099500e-005 	 5.585000e-006 
12000.000000 	 -2.240000e-005 	 9.170000e-006 
14000.000000 	 -1.806000e-005 	 6.720000e-006 
16000.000000 	 -1.576500e-005 	 4.890000e-006 
18000.000000 	 -1.428000e-005 	 5.575000e-006 
20000.000000 	 -1.159000e-005 	 5.160000e-006 
22000.000000 	 -1.080000e-005 	 1.710000e-006 
24000.000000 	 -6.220000e-006 	 1.725000e-006 
26000.000000 	 -7.405000e-006 	 3.710000e-006 
28000.000000 	 -6.630000e-006 	 4.160000e-006 
30000.000000 	 -6.980000e-006 	 2.530000e-006 
32000.000000 	 -3.425000e-006 	 3.800000e-007 
34000.000000 	 -4.310000e-006 	 2.835000e-006 
36000.000000 	 -1.840000e-006 	 1.905000e-006 
38000.000000 	 -3.595000e-006 	 1.905000e-006 
40000.000000 	 -4.510000e-006 	 2.730000e-006 
42000.000000 	 -2.010000e-006 	 3.005000e-006 
44000.000000 	 -1.550000e-006 	 2.405000e-006 
46000.000000 	 -3.170000e-006 	 3.525000e-006 
48000.000000 	 -2.950000e-006 	 -4.500000e-008 
50000.000000 	 -2.350000e-006 	 -7.450000e-007 
52000.000000 	 -5.385000e-006 	 2.690000e-006 
54000.000000 	 -1.725000e-006 	 1.750000e-007 
56000.000000 	 -3.465000e-006 	 3.720000e-006 
58000.000000 	 -1.160000e-006 	 1.325000e-006 
60000.000000 	  1.190000e-006 	 1.495000e-006 

上記データのダウンロード : Example.txt

例として上のデータを元にした以下のような 図を作成することにします。
作成した図の例

top に戻る


4. ビットマップ形式の画像を作成する

昔はアウトラインデータのグラフにこだわってきましたが,プレゼン用には画面に出力できれば いいので本来それほど解像度が要求されません。また,透過などを使った複雑な 3D のグラフでは, アウトラインではデータが多くなりすぎますのでビットマップのグラフにしたほうが却って 軽いグラフになります。

また,ビットマップの利点として,フォントの互換などの問題なくなります。 これ以上,プラットフォーム依存しないのものはないといっていいでしょう。

そういうこともあって最近は,ビットマップ形式のグラフをプレゼンでは使用することが多く なりました。

gnuplot には様々なビットマップ形式のグラフを作成する出力形式 (gnuplot では,ターミナルと呼びます。)があります。 ここでは,初心者にも分かりやすく, また綺麗なグラフを作成できる wxt ターミナルを使うことにします。

wxt ターミナルは, Windows 上ではver 4.4 からサポートされていて, デフォールトのターミナルになっています。

wxt ターミナルは次の2つの特徴を持ちます。

  1. 対話型のターミナルで見栄えを確認しながら作業できる
  2. アンチエイリアスという曲線を滑らかに表示をする技術を使っているので, 見栄えがいいグラフが作成できる。

注:描画のスピードは従来から使われているwindows ターミナルのほうが高速なので, 用途により使いわけるといいでしょう。

gnuplot のインストールやスクリプト,wxt ターミナルについては,前述した 京都大学の米澤さんのHPを参考にしてください。

以下にスクリプトファイルの例を示します。 スクリプトの中のコメントにコマンドの意味を書いてあります。

# # はコメントを意味し,その行に書かれたものは # 以降無視される。 # スクリプトファイル Exwxt.plt。 # wxt ターミナルによるビットマップグラフの作成例です。 # データファイル名 fname='Example.txt' # 軸範囲の設定 set xrange [0:65] set yrange [0:1] # はじめは「set autoscale xy」のコメントをはずして( # をおう消す) # 自動スケールでプロットする。 # プロット範囲が決まったら,上記の「軸範囲の設定」の設定をして # 「set autoscale xy」はコメントとして( # をつける)無効にする。 # set autoscale xy # キーを非表示 unset key # 関数フッティングのための x 軸,y 軸の調整因子の設定 #(値が1からそれほど離れない程度に調整) xfac=1000 # kHz単位から MHz単位に yfac=7e-5 # 頂点の y 座標を目安に # 関数フッティングの初期値 a=1 fr=11.3779 b=0.01 # 関数の定義 f(x)=a/(1+(x/f)**2) + abs(b) # フッティングの実行 fit f(x) fname using ($1/xfac):(sqrt($2**2+$3**2)/yfac) via a, f, b # wxtターミナルの設定 サイズやフォント適宜変更するとよい set terminal wxt size 640, 480 font "Arial,14" # フィッテングの曲線とデータのプロット plot \ f(x)/(a+abs(b)) with lines linetype 3, \ fname using ($1/xfac):(sqrt($2**2+$3**2)/yfac) \ pointtype 7 pointsize 1.5 linetype 1 # 上記プロットのコマンドの解説 # plot コマンドは一行で書かなければならないが,読みにくくなるため # 継続行という機能を使っている。 # 行末の \ は,「次の行に続く」という意味を持つ # f(x)/(a+abs(b)) with lines linetype 3 # は関数を x = 0 の値が 1 なるようにしてプロットしている # fname using ($1/xfac):(sqrt($2**2+$3**2)/yfac) \ # pointtype 7 pointsize 1.5 linetype 1 # はデータファイルの 1 列目を xfac で割ったものを x 軸に # 2 列目と 3 列目の二乗和の平方根を y 軸としてプロットしている # 関数を先にプロットしているため関数の曲線よりデータのプロット点 # が手前にプロットされる。

このスクリプトを実行すると以下のような window が表示されます。

wxt ターミナルでの作図の例

上の図の水色の矢印の部分(この矢印は,私が書いたもので,実際には表示されません。) をクリックするとこの図がクリップボードにコピーされます。

下の図は Impress に貼り付けて,図の大きさを調整し,X 軸,Y 軸の値ラベルや図のタイトルを Impress でつけたもののスナップショットです。

wxt ターミナルでの作図の例

top に戻る


5. ベクトル形式の画像を作成する

ビットマップ形式の図の利点を上で述べましたが, 縮尺を変えても画像が粗くならないのがベクトル形式の画像の利点です。 印刷物として高い画質が求められる論文では, 写真など以外はベクトル形式の画像を求められることがあります。 そういうわけでベクトル形式の画像も大事だといえます。 ここでは,学会要旨や論文を想定してモノクロでの画像の作成を行います。 もちろんカラーにすることもできます。

gnuplot には,さまざまなベクトル形式の描画形式 (gnuplot の用語ではターミナル)が用意されています。 (あまりにたくさんあるのでどれを使用してよいのかわからなくなります。) ここでは,

  1. emf (enhanced meta file,拡張メタファイル)ターミナルでの作図
  2. PostScript ターミナルの eps(Encapsulated PostScript)での作図
を2つにしぼり,その使用法の一例を説明します。

なお,emf ターミナルでは,gnuplot 以外のツールは必要ありませんが, eps ターミナルの場合は,周辺ツールが必要になります。

top に戻る


5.1 gnuplot の emf ターミナルを使って作成する

emf ターミナルは,windows のグラフィックスの標準ファイルである emf 形式の図を出力するターミナルです。 windows 標準ですので,他のツールを使用することなく, 手軽に使用することができる点が利点となります。

まず,以下にスクリプトファイルの例を示します。

# # はコメントを意味し,その行に書かれたものは # 以降無視される。 # スクリプトファイル ExEmf.plt # emf ターミナルによるベクトル形式のグラフの作成例 # データファイル名 fname='Example.txt' # 画像出力ファイル名の設定 emffname='ExEmf.emf' # 軸範囲の設定 set xrange [0:65] set yrange [0:1] # はじめは「set autoscale xy」のコメントをはずして( # をおう消す) # 自動スケールでプロットする。 # プロット範囲が決まったら,上記の「軸範囲の設定」の設定をして # 「set autoscale xy」はコメントとして( # をつける)無効にする。 # set autoscale xy # キーを非表示 unset key # 関数フッティングのための x 軸,y 軸の調整因子の設定 #(値が1からそれほど離れない程度に調整) xfac=1000 # kHz単位から MHz単位に yfac=7e-5 # 頂点の y 座標を目安に # 関数フッティングの初期値 a=1.1515 fr=11.3779 b=0.01 # 関数の定義 f(x)=a/(1+(x/f)**2) + abs(b) # フッティングの実行 fit f(x) fname using ($1/xfac):(sqrt($2**2+$3**2)/yfac) via a, f, b # emf モノクロ形式で出力の指定 set terminal emf monochrome font "Arial, 18" size 640, 480 # 出力ファイル名を設定 set out emffname # フィッテングの曲線とデータのプロット plot f(x)/(a+abs(b)) with lines linetype 2 linewidth 1.5,\ fname using ($1/xfac):(sqrt($2**2+$3**2)/yfac) \ linetype 5 pointtype 7 pointsize 1 # 上記プロットのコマンドの解説 # plot コマンドは一行で書かなければならないが,読みにくくなるため # 継続行という機能を使っている。 # 行末の \ は,「次の行に続く」という意味を持つ # f(x)/(a+abs(b)) with lines linetype 3 # は関数を x = 0 の値が 1 なるようにしてプロットしている # fname using ($1/xfac):(sqrt($2**2+$3**2)/yfac) \ # pointtype 7 pointsize 1.5 linetype 1 # はデータファイルの 1 列目を xfac で割ったものを x 軸に # 2 列目と 3 列目の二乗和の平方根を y 軸としてプロットしている # 関数を先にプロットしているため関数の曲線よりデータのプロット点 # が手前にプロットされる。 # 出力ファイルを閉じて描画を完了する。 set output # Windows 画像とFAX ビューアー(XPのみ)で出力の確認 # Vista や 7 では,デフォールトでは「ペイント」が起動する # Windows Vista や 7 の方は emf が見えるビューアーの使用を推奨 system emffname

XPの場合は,「画像とFAX ビューアー」で以下のような出力が得られます。 (Vista や 7 では,「ペイント」起動するようです。emf を見えるビューアーの 使用をお奨めします。)

画像とFAX ビューアーでのスナップショット

これを見るとあまり綺麗ではないように見えますが, 後に説明するように実際に印刷すると綺麗に印刷されます。

上のスクリプトを実行すると, エクスプローラーで出力ファイル(ここでは ExEmf.emf ) のアイコンが表示されます。 このアイコンを Ctrl+C やコンテクストメニュー (マウスの右クリックなどで表示されるメニュー)を使ってコピーをします。 ご存知ない方も多いと思いますが, emf や png の画像のファイルの場合ファイルそのもののコピーが行われるだけでなく, クリップボードに図の要素がコピーされます。 それをアプリケーションに「貼り付け」することが可能です。 ちょっとしたことですが,覚えておかれると便利です。

ここでは Draw を使うことにします。横向きの図なので,「書式」メニューの「ページ」 を使って横向きにページを設定します。 縦長のグラフでは,縦の方がいいと思います。

Draw をアクティブにした状態でかつ全体が画面表示されるような設定にして Ctrl+V やメニューを使って図を貼り付けます。 この方法を使うと中央にセンタリングされて 必ず同じ位置に貼り付けられるので,試行錯誤しているときには便利です。

エクスプローラーでファイルのアイコンを Draw にドラッグアンドドロップしても図は貼れますが, 位置が一定しないので上記の方法が便利です。 後は Draw の「テキスト」機能を使って縦軸,横軸を入れて図を作成します。 必要に応じてコピぺで Writer や Impress に貼り付けて使用します。 Writer や Impress に貼り付ける時には,「編集」メニューの「形式を選択をして貼り付け」 または Ctrl+Shift+V のキー操作を実行して, 「GDIメタファイル」で貼り付けます。 この形式で貼り付けると Draw では編集できなくなりますが, 図を縮小・拡大したときに文字もそれに応じてスケールされるので便利です。

Writer 上でのスナップショットを以下に示します。

Writer 上でのスナップショット

次ににDraw で作成した図を pdf にエクスポートしたものを示します: ExEmf.pdf

印刷すると綺麗なものになることがわかります。論文や学会の要旨に使って十分な図になることが わかります。2ページ目は,プロットのコマンドを

# データのプロット plot f(x)/(a+abs(b)) with lines linetype 1 linewidth 1.5,\ fname using ($1/xfac):(sqrt($2**2+$3**2)/yfac) \ linetype 5 pointtype 6 pointsize 1
にしたものです。

これを見て,白抜き○を線の上に描画したいなと思うわれる方もいると思います。 emf ターミナルは手軽ですが,シンボルや線種の種類が少ないのが難点です。 特にモノクロだとシンボルや線種の種類も多いほうがいいと思います。 そのような要求に応えるのが,PostScript ターミナルの eps 形式となります。

top に戻る


5.2 gnuplotの PostScript ターミナルを使って作成する

5.2.1 PostScript ターミナルを使うのはなぜか

PostScript ターミナルは,gnuplot の中では古い歴史をもち,描画能力に優れています。 ただし,最近対応した「透過」の機能を使うことができません。 ベクトル形式で透過を使うには svg ターミナルまたは pdfcairo ターミナルを使う必要があります。 しかし,一般的な描画ではやはり強力です。 LaTeX には,eps を取り込む機能が昔からありますので LaTeX ユーザーには, gnuplot の PostScript ターミナルは古くから使用されてきました。

また,LaTeX がなくても Adobe Illustrator をお持ちの方は, PostScript ファイルを直接編集できますので, ここから先は読まなくてもかまいません。

私がプロット PostScript ターミナルを使う理由のひとつとして, シンボルの種類の豊富さがあげられます。 PostScript ターミナルで使用できるシンボルや線種は, PosrtScript ファイル形式でWindows版の gnuplot バイナリに添付されています。 (docs\postscript-terminal の ps_symbols.ps) それを png に変換したものが以下となります。

PosrtScript ターミナルのプロットで使用できるシンボル

このうち '#70-75 are opaque' とされているシンボルは,中が白で塗られています。 そのため,線の上に描画すると線の上にシンボルが来るようになりますし, シンボル同士が重なったとき,線の重なりが綺麗になります。 モノクロのグラフではこの様な点で利点が多いと思います。 そういった点で,私は PostScript ターミナルを使用することが多いです。

OpenOffice.Org で PostScript ファイルが直接編集できればいいのですが, そうはいかないようです。

PostScript ファイルは,PDF ファイルに変換でき, OpenOffice には PDF ファイルを変換する拡張機能があることに気づきました。 現在,検討中なのでそのことについては,別に触れる事にしたいと思います。
eps 形式のファイルを Draw などで読み込むことは可能ですが, ビットマップに変換されてしまいます。 それはそれで,一つの使い方ですが, ベクトル形式にこだわることにします。 そのために eps ファイルを windows 標準の emf ファイルに変換します。 これを行えば,先にあげた,emf ターミナルを使う場合のように OpenOffice.org の Draw で編集を行うことができます。 emf ファイルへの変換にために,以下に挙げるフリーソフトを使用します。

Ghostscript は,PostScript をハンドリングするソフトで pdf との相互変換ができます。

GSview は PostScript ファイルのビューアーで,実は pdf も見ることができます。

pstoedit は,Ghostscript の機能を使って postscript ファイルを他のベクトル形式のファイルに変換して編集可能にする目的のソフトです。 しかしながら,完全ではありません。 pstoedit には,emf ファイルへの変換機能がありますが, 点線などが,うまく変換できないことがあります。 そこで fig 形式という別のファイル形式を経由する方法を使います。

fig 形式 は Xfig という Unix 上では有名な Draw ソフトが使用するファイル形式です。 fig2dev というコマンドは,fig 形式のファイルを他の形式に変換するコマンドです。 このコマンドをつかって pstoedit で fig 形式に変換したファイルを, emf 形式に変換します。

fig2dev は,Unix 上のソフトなので, Windows では Cygwin を利用することになります。 Cygwin とは,Unix 上のソフトを Windows 上で動作させるツールの一つです。

参考リンク

Ghostscript の詳細情報へのリンク

Cygwin の詳細情報へのリンク

top に戻る


5.2.2 必要なアプリケーションをインストールする

それぞれのソフトは,以下から入手できます。

Ghostscript + GSview のインストールについては,上のリンク先に, install.txt というファイルがありますのでそれに従ってください。 特に PATH の設定は必ず行ってください。

pstoedit は,ダウンロードして,普通にインストールするだけでかまいません。 (デフォールトで,C:\Program Files\pstoedit にインストールされます。)

Cygwin については,上のダウンロード先から,Setup.exe をダウンロードしてインストールします。 次のページに詳しい解説があります。

Windows に Cygwin バージョン 1.7 をインストール

このページのやり方にしたがいますが,「9. Cygwin 導入パッケージ」の項で,
Graphics/transfig を選んでください。

なお,fig2dev だけの使用の場合上記ページの, 「13.cygwin1.dll のコピー」と「14.環境変数の設定」は, スキップしてください。


Cygwin について注釈

fig2dev だけのために Cygwin をインストールすることに抵抗がある人も多いかと思います。 しかし,fig2dev の実行に最小限必要なファイルだけ取り出して Cygwin 自体をアンインストールすることが可能です。 したがって,一度は Cygwin をインストールしてください。

Cygwin のアンインストールは簡単で, Cygwin のインストールフォルダをフォルダごと削除してください。 (デフォールトのCygwin のインストールフォルダは, C:\Cygwin です。)

Cygwin は現在のバージョン(1.7)から, 使用するレジストリは setup.exe が使用するものだけになりました。

Windows に Cygwin バージョン 1.7 をインストール に記載されているレジストリの項目は現在の バージョン 1.7 では存在しません。

また,バージョン 1.7 から, 複数の Cygwin セッションを同時に起動できるようになったので, Cygwin をインストールしている人でも fig2dev だけ別にフォルダーにもインストールすることが可能です。 私は,別にフォルダーにもインストールした fig2dev に Path の設定をして他のツールとのコンフリクトを避けています。

さて,fig2dev の実行に必要なものは,Cygwin のランタイムライブラリで cyg(....).dll という名前のファイルうち, fig2dev が使用するものです。

Cygwin のプロンプトを立ち上げて,

cygcheck fig2dev

と打ち込みます。以下のような表示が出ます。

Found: C:\Programs\cygwin-1.7\bin\fig2dev.exe
Found: C:\Programs\cygwin-1.7\bin\fig2dev.exe
Found: C:\Program Files\fig2dev\fig2dev.exe
C:\Programs\cygwin-1.7\bin\fig2dev.exe
  C:\Programs\cygwin-1.7\bin\cyggcc_s-1.dll
    C:\Programs\cygwin-1.7\bin\cygwin1.dll
      C:\WINDOWS\system32\ADVAPI32.DLL
        C:\WINDOWS\system32\KERNEL32.dll
          C:\WINDOWS\system32\ntdll.dll
        C:\WINDOWS\system32\RPCRT4.dll
          C:\WINDOWS\system32\Secur32.dll
  C:\Programs\cygwin-1.7\bin\cygXpm-4.dll
    C:\Programs\cygwin-1.7\bin\cygX11-6.dll
      C:\Programs\cygwin-1.7\bin\cygxcb-1.dll
        C:\Programs\cygwin-1.7\bin\cygXau-6.dll
        C:\Programs\cygwin-1.7\bin\cygXdmcp-6.dll
  C:\Programs\cygwin-1.7\bin\cygpng12.dll
    C:\Programs\cygwin-1.7\bin\cygz.dll

このうち,fig2dev.execyg(....).dll の形式のものだけをコピーすればいいです。 たとえば,C:\fig2dev をつくり,そこにコピーをしてください。 確認は,fig2dev のアイコンをダブルクリックして, エラーなしに一瞬画面がでて終了すれば OK です。

上記の cygcheck 表示で, Cygwin のインストールフォルダ名が,C:\Programs\cygwin-1.7\ となっているのは,私がカスタマイズしたインストールをしているためです。 デフォールトのインストールフォルダは,C:\Cygwin です。

ちなみに,2010年11月時で必要なファイルは以下のようです。 バージョンアップなどで変わると思いますので, 必ず cygcheck コマンドでご確認ください。

cyggcc_s-1.dll
cygpng12.dll
cygwin1.dll
cygX11-6.dll
cygXau-6.dll
cygxcb-1.dll
cygXdmcp-6.dll
cygXpm-4.dll
cygz.dll
fig2dev.exe

注: コマンドプロンプトで,fig2dev -help と打つとヘルプが表示されます。 そこでコマンドプロンプトでfig2dev -help > fig2dev.txt と すると fig2dev.txt にヘルプの内容が保存されます。 (リダイレクトと呼ばれる方法です。)

反対に積極的に Cygwin を使うという考え方もあります。 なぜなら Cygwin には gnuplot,Ghostscript, gv (GSview と同様なソフト Unix系ではこちらが用いられる),pstoedit, fig2dev がすべてそろっています。 したがって,Cygwinで必要なアプリケーション一式をそろえてしまうのも, 一つの方法です。

残念ながら Cygwin 用の gnuplot には,wxt terminal がありませんが, pngcairo ターミナルがあり, 美しい png 形式のビットマップ形式の画像を作成することができます。 私も一時期はすべて,Cygwin でやっていたことがあります。

Cygwin でそろえたい方は,Cygwin の setup 時の 「9. Cygwin 導入パッケージ」で以下を選んでください。

top に戻る


5.2.3 画像を作成する

前置きが長くなりましたが,実行するスクリプトです。

# # はコメントを意味し,その行に書かれたものは # 以降無視される。 # スクリプトファイル ExEmf.plt # postcript ターミナルによるベクトル形式のグラフの作成例 # データファイル名 fname='Example.txt' # 画像出力ファイル名の設定 epsfname='EpsFigEmf.eps' emffname='EpsFigEmf.emf' # pstoeditとfig2devのパスの指定 # シングルクォートとダブルクォートの使い分けに注意 # 個々の環境に応じて修正してください pstoedit='"C:\Program Files\pstoedit\pstoedit"' fig2dev='"C:\Cygwin\bin\fig2dev"' # 軸範囲の設定 set xrange [0:65] set yrange [0:1] # はじめは「set autoscale xy」のコメントをはずして( # をおう消す) # 自動スケールでプロットする。 # プロット範囲が決まったら,上記の「軸範囲の設定」の設定をして # 「set autoscale xy」はコメントとして( # をつける)無効にする。 # set autoscale xy # キーを非表示 unset key # 関数フッティングのための x 軸,y 軸の調整因子の設定 #(値が1からそれほど離れない程度に調整) xfac=1000 # kHz単位から MHz単位に yfac=7e-5 # 頂点の y 座標を目安に # 関数フッティングの初期値 a=1.1515 fr=11.3779 b=0.01 # 関数の定義 f(x)=a/(1+(x/f)**2) + abs(b) # フッティングの実行 fit f(x) fname using ($1/xfac):(sqrt($2**2+$3**2)/yfac) via a, f, b # eps モノクロ形式で出力の指定 # フォントは,"Times-Roman, Helvetica, (Courier)"から選ぶ。 set terminal postscript eps monochrome font "Helvetica, 24" set out epsfname # フィッテングの曲線とデータのプロット plot f(x)/(a+abs(b)) with lines linetype 2 linewidth 1.5,\ fname using ($1/xfac):(sqrt($2**2+$3**2)/yfac) \ linetype 5 pointtype 7 pointsize 1 # 上記プロットのコマンドの解説 # plot コマンドは一行で書かなければならないが,読みにくくなるため # 継続行という機能を使っている。 # 行末の \ は,「次の行に続く」という意味を持つ # f(x)/(a+abs(b)) with lines linetype 3 # は関数を x = 0 の値が 1 なるようにしてプロットしている # fname using ($1/xfac):(sqrt($2**2+$3**2)/yfac) \ # pointtype 7 pointsize 1.5 linetype 1 # はデータファイルの 1 列目を xfac で割ったものを x 軸に # 2 列目と 3 列目の二乗和の平方根を y 軸としてプロットしている # 関数を先にプロットしているため関数の曲線よりデータのプロット点 # が手前にプロットされる。 # 出力ファイルを閉じて描画を完了する。 set output # pstoedit と fig2devをコマンドラインで起動して # emf形式のファイルを作成する。 # tmpfig.fig は,fig 形式の作業ファイル system pstoedit." -f fig ".epsfname." tmpfig.fig" system fig2dev." -L emf tmpfig.fig ".emffname system "del tmpfig.fig" # Windows 画像とFAX ビューアー(XPのみ)で出力の確認 # Vista や 7 では,デフォールトでは「ペイント」が起動する # Windows Vista や 7 の方は emf が見えるビューアーの使用を推奨 system emffname

なお,cygwin上で実行する場合は,Path の設定は必要ありません。 また,fig 形式の作業ファイルの削除コマンドは,

system "del tmpfig.fig"

となっていますが,delrm に置き換えてください。

XPの場合は,「画像とFAX ビューアー」で以下のような出力が得られます。 (Vista や 7 では,「ペイント」起動するようです。emf を見えるビューアーの 使用をお奨めします。)

画像とFAX ビューアーでの eps->emf の場合のスナップショット

これを見るとあまり綺麗ではないように見えますが, 後に説明するように実際に印刷すると綺麗に印刷されます。 また,シンボルとして71番のものを使用しており,線を描画した後に 点を描画するようにしているので,線上の点が線より前に描画されています。

なお,eps 形式の図を GSview で直接見た場合を示します。

GSview でみた eps ファイル の場合のスナップショット

見た目の違いはありますが,作成した emf がもとの eps の画像を忠実に再現しているのがわかります。

後は,emf ターミナルの場合と同様なのですが, OpenOffice.org ではフォントの置換の設定が必要となります。 (MS-Office や Kingsoft Office では自動で変換されるようです。)

  1. OpenOffice.org のいずれでもソフトでいいのですが,起動します。
  2. メニュー「ツール」→「オプション」→「OpenOffice.Org」→「フォント(の種類)」 選びます。
  3. 「置換テーブルを使う」をチェックします。
  4. 「フォントの種類」に Helvetica と打ち込み, 「置換候補」は Arial を選択します。
  5. 薄緑色の「レ」のようなボタンを押し,フォント置換を登録します。(登録するとリストが出ます。)
  6. 「常に」をチェックします。
  7. 同様にして TimesTimes New Romanに置換します。 (fig2dev を経由することで Times-RomanTimes に置換されています。)
なお,Courier フォントは, Windows 上では 画面表示専用 フォントである同じ名前に Courier フォントが存在するので悩ましいのですが, 私は Courier New に置換するように置換テーブルを設定しています。 (一般的な用途では,グラフに用いるフォントは, HelveticaTimes-Roman のいずれかだと思います。)

フォント置換の設定は,通常一度行えば結構です。

emf ファイルを Draw に貼り付けて, タイトルなどの編集を行い Writer に「GDIメタファイル」で貼り付けます。

OpenOffice.org 上では点線などの場合 ズームで倍率をあげないと点線が点線に見えない場合があります。 ただし,pdf エクスポートや印刷をすれば点線が表示されます。

以下は,Writer で説明をいれ,writerの pdf エクスポートを利用して作成した, 論文投稿用の pdf 形式のサンプルファイルです。

EpsFigEmf.pdf

pdf 形式の論文投稿用の画像の質の高く, 見た目も美しいベクトル形式のグラフが作成できました。

top に戻る


6. 終わりに

フリーソフトは,単独で用いるだけでなく, いくつかのソフト組み合わせることでいろんなことができます。 最近,OpenOffice.org を使用し始めて, さらにその思いを強くしています。

今回紹介したものは,そのような使用例の一つでしかありません。 他にもいろいろなアイデアがあると思います。 そのようなアイデアをみんなで共有できるのが, フリーソフトウェアを使用する意義の一つだと思っています。

このページが少しでも皆様のお役に立てば幸いです。

top に戻る


7. 謝辞

この文章を作成するにあたり,OpenOffice.org の Documentation メーリングリストで本当に貴重なアドバイスを下さった矢崎さんに 強くお礼を申し上げます。

top に戻る
1