注意:印刷の方法を間違えると,意味不明な文字列が多量に印刷されるといった事故がおきますので十分注意してください.なお,多くの人が同じプリンターを用いて印刷しますので,グラフには必ず自分の学籍番号等を表示するようにプログラムを作成してください.自分で印刷したものは必ず回収すること.
glsc の関数に g_device という関数があります。これまでは、いつも g_device(G_DISP) とせよといってきましたが、印刷したい場合には、違った使い方をします。プログラムのはじめの方に各 g_device(G_DISP) はそのままに、具体的には、印刷したいグラフを表示する直前に、
g_device(G_BOTH);
という一行を挿入し、印刷したいグラフを表示する部分が終わった次の行に
g_device(G_DISP);
という行を書き加えます。この様にして作ったプログラムをコンパイルして実行すると、 g_init 関数の第一引数として与えた文字列(GRAPH とかそういった文字列)のファイルが生成されます。そのファイルの中には、グラフの情報が書かれているのですが、そのままでは印刷できません。このファイルをそのまま印刷すると、意味不明な文字列が書かれた大量の無駄な印刷が行われますので注意してください(これまであまり積極的に印刷に関する説明をしなかったのはその為です。十分注意してください。)
続いて、作成されたファイルを印刷できる形式に変換します。変換には g_out というコマンドを用います。具体的には、ターミナル上で、
g_out -v GRAPH
等とします。(GRAPH は g_init 関数で指定されたファイル名)すると、 GRAPH.ps というファイルが生成されます。ファイルマネージャーで、 GRAPH.ps をダブルクリックすると、画面上で印刷結果を確認できます。まずは、そのようにして確認してください。印刷は、その画面上に表示するソフトから印刷できます。または、ターミナルで、
lpr GRAPH.ps
または
lpr -Pプリンタ名 GRAPH.ps
とすれば、印刷されます。プリンタ名部分は,実際に出力したいプリンタに書かれています.-P の後にスペースを空けずにプリンタ名を書いてください.例えば,
lpr -Ppearpr4 GRAPH.ps
等.
GLSCマニュアル中で、g_init や g_def_scale といった関数中の、標準座標の単位が mm となっていますが、これは印刷時のサイズです。例えば、g_init("GRAPH", 100.0, 100.0); とすると、印刷結果が 10cm x 10cm になると言うことです。(画面上のサイズは必ずしもそうとはならない。)
以下に,例を示します.青い二行に注目してください.その二行に挟まれたところで描かれた図が印刷されます.(挟まれていない部分は画面には表示されるが印刷はされない)
例
#include <glsc.h>
#include <stdio.h>
main()
{
g_init("GRAPH", 100.0, 100.0);
g_device(G_DISP);
g_def_scale(1, -1.0, 1.0, -1.0, 1.0, 10.0, 10.0, 80.0, 80.0);
g_sel_scale(1);
g_device(G_BOTH);
g_area_color(G_BLUE);
g_line_color(G_BLUE);
g_circle(0.0, 0.0, 0.5, G_YES, G_YES);
g_line_color(G_YELLOW);
g_line_width(3);
g_move(-1.0, -1.0);
g_plot(1.0, 1.0);
g_device(G_DISP);
g_line_color(G_BLACK);
g_line_width(1);
g_move(-1.0, 1.0);
g_plot(1.0, -1.0);
g_sleep(G_STOP);
g_term();
}
このプログラムを実行すると、画面には次のように表示される。
g_init 中でファイル名を "GRAPH" としているので、実行ファイルと同じフォルダ内に GRAPH というファイルができているはずである。それを、g_out コマンドを用いて、印刷できる形式に変更する。
g_out -v GRAPH
すると、同フォルダ内に GRAPH.ps というファイルが生成される。これを印刷すれば良いのだが、紙がもったいないので、まずは画面で見てみることにする。ファイルマネージャーで GRAPH.ps というファイルをダブルクリックすることで、画面上で GRAPH.ps の印刷結果を見ることができる。まず、気がつくことは、色がでないことである。残念ながら印刷は白黒でしかできない。また、表示画面にはある右斜めの線が無い。これは、右斜めの線を描く部分が g_device(G_BOTH); と g_device(G_DISP); の間に入っていないからである。この様に、g_device(G_BOTH); と g_device(G_DISP); で囲む場所を選ぶことにより、印刷結果を自由に選ぶことができる。
注意: アニメーションプログラムにおいては、アニメーションを行う部分を g_device(G_BOTH); と g_device(G_DISP); で囲んでしまうと、アニメーションの一こま一こまが全て印刷される事になる。これでは数百枚の紙を無駄にすることになるので、注意が必要。こういった場合には、最終結果を表示する部分を新たにプログラムの終わりの方に付け加え、その部分を g_device(G_BOTH); と g_device(G_DISP); で囲み、最終部分のみ印刷できるようにすると良い。
gnuplot で描いたグラフをプリンターで出力したい場合もあるでしょう。その方法を示します。
まずは、グラフにしたい数値データを作成します。数値データファイルが N=50.data であり,それをグラフ化し印刷することにします。手順としては、次のようになります。(数値データは自分で用意)
gnuplot を起動する。
gnuplot のプロンプトに続いて(第一行の YOUR NAME の部分は自分の名前としてください)、
set title "YOUR NAME"
set term postscript
set output "N=50.ps"
とします。続いて、グラフの描画を行うコマンドを打ち込みます。例えば、
plot 'N=50.data' with line
とします。今回は、前回と違って画面には何も表示されません。
quit
として、gnuplot を終了します。
ターミナルのプロンプトに戻りますが、ターミナルのプロンプトにつづいて ls コマンドを実行すると
N=50.ps
というファイルができていることがわかります。これは、グラフの情報が書き込まれたファイルで、ポストスクリプトファイルと呼ばれます。この、ポストスクリプトファイルを印刷することで、紙に印刷されたグラフを得ることができます。具体的には、ターミナルで、
lpr N=50.ps
または
lpr -Pプリンタ名 N=50.ps
とします。後者であればプリンタ名で指定されたプリンタにグラフが表示されます。前者の場合、どのプリンタにでるのかよくわかりません。また、グラフのタイトルの部分には、自分の名前が書かれているはずです。プリンタ名部分はプリンタに書かれているのでそれに置き換えてください。
この例でわかるように、
set title
で、グラフ上部のタイトル部分を設定し、
set output
で、グラフ情報を格納するファイル名を指定します。グラフ上部のタイトル部分は、自分の名前としてください。そうすることで、他の人の出力したグラフと区別することができます。