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