PGPLOT 程式繪圖及動畫的快速範例
系統需求
PGPLOT 能安裝的平台,例如 有 X-Window 視窗環境的 LINUX / UNIX 或 (微軟視窗中可安裝的)Cygwin 的系統。
編譯方法
寫一個 Fortran 程式,�堶掠ㄓF本來就要有的輸出入、運算等指令外,再配合繪圖專用的 pgplot 指令,完成後,以下列指令編譯:
gfortran pg_test.f -L /usr/local/pgplot -lpgplot -lX11
則打 ./a.out <Enter> 就可以執行。
基本程式框架
program pg_test
integer pgopen
real xmin, xmax, ymin, ymax
if (pgopen('/xwin') .le. 0) stop
call pgenv(xmin,xmax,ymin,ymax,0,0)
...(其他內容)...
call pgclos
end
或是
program pg_test
integer pgopen, iostat
real xmin, xmax, ymin, ymax
iostat = pgopen('/xwin')
if (iostat .le. 0) stop
call pgenv(xmin,xmax,ymin,ymax,0,0)
...(其他內容)...
call pgclos
end
快速範例
畫一個點
在 x, y 為 [-1,1] 的範圍內,將一個點以 "1 號" 符號畫在 (x,y) = (0.5, 0.4) 的位置
program pg_one_point
integer pgopen
real xmin, xmax, ymin, ymax, x, y
if (pgopen('/xwin') .le. 0) stop
xmin = -1.0
xmax = 1.0
ymin = -1.0
ymax = 1.0
x = 0.5
y = 0.4
call pgenv(xmin,xmax,ymin,ymax,0,0)
call pgpt(1,x,y,1)
call pgclos
end
畫多個點
一次畫三個點,在 x, y 為 [-1,1] 的範圍內,將那三個點以 "9 號" 符號畫在 (x,y) = (0.2, 0.2) (x,y) = (-0.4, -0.4) (x,y) = (0.6, 0.6) 的位置
program pg_multi_points
integer pgopen
real xmin, xmax, ymin, ymax, x(3), y(3)
if (pgopen('/xwin') .le. 0) stop
xmin = -1.0
xmax = 1.0
ymin = -1.0
ymax = 1.0
x(1) = 0.2
y(1) = 0.2
x(2) = -0.4
y(2) = -0.4
x(3) = 0.6
y(3) = 0.6
call pgenv(xmin,xmax,ymin,ymax,0,0)
call pgpt(3,x,y,9)
call pgclos
end
畫一條線
program pg_one_line
integer pgopen
real xmin, xmax, ymin, ymax, x(2), y(2)
if (pgopen('/xwin') .le. 0) stop
xmin = -1.0
xmax = 1.0
ymin = -1.0
ymax = 1.0
x(1) = 0.0
y(1) = 0.0
x(2) = 1.0
y(2) = 1.0
call pgenv(xmin,xmax,ymin,ymax,0,0)
call pgline(2,x,y)
call pgclos
end
多點連線
以多點連線段的方式畫出三個點 (-0.2, 0.2), (0.0, 0.0), (0.6, 0.6) 的連線
program pg_poly_line
integer pgopen
real xmin, xmax, ymin, ymax, x(3), y(3)
if (pgopen('/xwin') .le. 0) stop
xmin = -1.0
xmax = 1.0
ymin = -1.0
ymax = 1.0
x(1) = -0.2
y(1) = 0.2
x(2) = 0.0
y(2) = 0.0
x(3) = 0.6
y(3) = 0.6
call pgenv(xmin,xmax,ymin,ymax,0,0)
call pgline(3,x,y)
call pgclos
end
畫一個圓
一個簡單的範例程式 pg_test_circle.f ,在 x, y 各為 [-5,5] 範圍內畫一個中心在原點、半徑 2 的圓。
program pg_test_circle
integer pgopen
real xmin, xmax, ymin, ymax
if (pgopen('/xwin') .le. 0) stop
xmin = -5.0
xmax = 5.0
ymin = -5.0
ymax = 5.0
call pgenv(xmin,xmax,ymin,ymax,0,0)
call pgcirc(0.0,0.0,2.0)
call pgclos
end
操作方法
基本指令
(取自本人教材)
請見 連結
進階範例
動畫功能
關鍵技巧:算出物件的新位置後,在舊位置用背景色把物件塗掉,然後在新位置上畫上物件。
PGPLOT 寫的動畫程式範例, planet.f
滑鼠功能
按鍵功能
所謂的按鍵功能,
多視窗、多裝置
線上手冊
連結 http://163.13.111.54/numerical_methods/pgplot/doc/pgplot.html
李明憲老師的詳細 PGPLOT 教學 http://163.13.111.54/numerical_methods/nm_units/pgplot.htm