図形表示ライブラリは、 gfortranのプログラムから呼び出すことのできる図形表示のためのサブルーチンの集合体で、WinPlotGとPsPlotGの2種類が提供されています。
WinPlotGはPCの画面上のウィンドウに直接表示するためのライブラリで、画面表示後に印刷を選択することもできます。
PsPlotGはPostScript形式の図形ファイルを出力するためのライブラリです。 生成されたPostScriptファイルはPostScriptプリンタに出力でき、GSViewなどで画面表示したり、汎用のプリンタに出力することができます。
図形表示ライブラリのファイルは、図形表示ライブラリのページからダウンロードすることができます。
64bit用ライブラリ(V8.1用)はgfortranのバージョン9.2や10.3にも対応しているようです。
マニュアルは図形出力の手引のページで閲覧することができます。
画面表示用ライブラリ WinPlotGの利用例 | PSファイル作成用ライブラリ PSPlotGの利用例
図形出力の手引のページを参考にして、Fortranプログラムを作成します。
田辺・平山著「実践Fortran95プログラミング」 p.136のGnuplot用の例題を図形表示ライブラリ用に改変した例を示します。
program ex143_ps implicit none real, parameter :: PI =3.14159 real :: t, r, x, y integer :: i call XINT('WIN=(600,600)') ! プロットの開始宣言 画面表示 call XVIEWP(-3.0, -3.0, 3.0, 3.0) ! ビューポートの指定 call AXIS2(-2.0, -2.0, 'x', -1, 4.0, 0.0, -2.0, 0.5, 1) ! X軸 call AXIS2(-2.0, -2.0, 'y', 1, 4.0, 90.0, -2.0, 0.5, 1) ! Y軸 call NLPPEN(4) ! ペンの変更 破線 call GRID(-2.0,-2.0,0.5,0.5,8,8) ! 格子 call CLRPEN(22) ! ペンの変更 緑色 call PLOT(1.7, 0.0, 3) ! ペン・アップ移動 do i=1, 100 t = 2.0*PI/100*i r = 1.5*cos(3.0*t) + 0.2 x = r*cos(t) y = r*sin(t) call PLOT(x, y, 2) ! ペン・ダウン移動 end do call CLRPEN(32) ! ペンの変更 青色 call PLOT(-2.0, -2.0, 3) ! ペン・アップ移動 do i=1, 100 x = -2.0 + 4.0/100.0*i y = x**3 - 3*x call PLOT(x, y, 2) ! ペン・ダウン移動 end do call XEND ! プロットの終了宣言 end program ex143_ps
plotg_example_win.f90のダウンロード (右クリック)
コマンド・プロンプトで、次のように入力します。
gfortran plotg_example_win.f90 -fno-range-check -L. -lWinPlot64 -o plotg_example_win
コンパイル・オプションについては、図形表示ライブラリの使用方法 の項の説明を参照してください。
plotg_example_win.exeのアイコンをダブル・クリックして実行します。
画面に作図結果が表示されます。
印刷する場合はPrintボタンをクリックします。Closeボタンをクリックするとウィンドウが閉じます。
図形出力の手引のページを参考にして、Fortranプログラムを作成します。
XINTの行を画面表示用からPSファイル出力用に修正します。
! call XINT('WIN=(600,600)') プロットの開始宣言 画面表示 CALL XINT('FILE=PLOT01.PS') ! プロットの開始宣言 用紙 A4横 ファイル名の指定
plotg_example_ps.f90のダウンロード (右クリック)
コマンド・プロンプトで、次のように入力します。
gfortran plotg_example_ps.f90 -fno-range-check -L. -lPSPlot64 -o plotg_example_ps
plotg_example_ps.exeのアイコンをダブル・クリックして実行します。
PSファイル PLOT01.PS が作成されます。
GSViewでPSファイルを開きます。
OrientationメニューからLandscapeを選んで表示方向を変更します。