Skip to content

Commit aa8e3f4

Browse files
authored
Merge pull request #33 from easifem/gnuplot
Updates docs
2 parents d0e07d0 + 6e98a0b commit aa8e3f4

16 files changed

+475
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
PROGRAM main
2+
USE GlobalData, ONLY: I4B, DFP
3+
USE GnuPlot_Class
4+
IMPLICIT NONE
5+
TYPE(GnuPlot_) :: gp
6+
INTEGER(I4B), PARAMETER :: tsize = 17_I4B
7+
REAL(DFP) :: xval(tsize)
8+
REAL(DFP) :: yval(tsize)
9+
10+
xval = DBLE([-8, -7, -6, -5, -4, -3, -2, &
11+
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8])
12+
yval = DBLE([66, 51, 38, 27, 18, 11, 6, 3, &
13+
2, 3, 6, 11, 18, 27, 38, 51, 66])
14+
15+
CALL gp%title('TEST 1. A simple xy plot')
16+
CALL gp%xlabel('x label ...')
17+
CALL gp%ylabel('y label ...')
18+
CALL gp%options('set style data linespoints')
19+
20+
CALL gp%plot(xval, yval)
21+
22+
END PROGRAM main
23+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
PROGRAM main
2+
USE GlobalData, ONLY: I4B, DFP, Pi
3+
USE GridPointUtility, ONLY: Linspace
4+
USE GnuPlot_Class
5+
IMPLICIT NONE
6+
TYPE(GnuPlot_) :: gp
7+
INTEGER, PARAMETER :: tsize = 40
8+
INTEGER :: ii
9+
REAL(DFP) :: xval(tsize), yval(tsize, 4)
10+
11+
xval = linspace(-pi, pi, tsize)
12+
yval(:, 1) = SIN(xval)
13+
yval(:, 2) = SIN(xval) * COS(xval)
14+
yval(:, 3) = (1.0_DFP - xval) * SIN(xval)
15+
yval(:, 4) = (1.0_DFP - xval) * COS(xval)
16+
17+
! general options
18+
CALL gp%options('set tics font ",8"')
19+
20+
!! nrow ncolumn
21+
CALL gp%multiplot(2, 2)
22+
23+
DO ii = 1, 4
24+
CALL gp%plot(xval, yval(:, ii), 'lt 4 pt 6')
25+
END DO
26+
! a new window will be started when all places in the multiplot
27+
! layout is occupied.
28+
29+
END PROGRAM main
30+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
PROGRAM main
2+
USE GlobalData, ONLY: I4B, DFP, Pi
3+
USE GridPointUtility, ONLY: Linspace, MeshGrid
4+
USE GnuPlot_Class
5+
IMPLICIT NONE
6+
TYPE(GnuPlot_) :: gp
7+
INTEGER, PARAMETER :: tsize = 40
8+
REAL(DFP), ALLOCATABLE :: xval(:, :), yval(:, :), zval(:, :)
9+
REAL(DFP), ALLOCATABLE :: xv(:)
10+
INTEGER :: nrow, ncol
11+
12+
xv = linspace(-0.75_DFP * pi, 0.75_DFP * pi, tsize)
13+
CALL meshgrid(xval, yval, xv, xv) !xval=yval
14+
nrow = SIZE(xval, 1)
15+
ncol = SIZE(xval, 2)
16+
ALLOCATE (zval(nrow, ncol))
17+
18+
!z= sin(x) * cos (y)
19+
WHERE (xval**2 + yval**2 == 0.0_DFP)
20+
zval = 1.0_DFP
21+
ELSEWHERE
22+
zval = SIN(xval**2 + yval**2) / (xval**2 + yval**2)
23+
END WHERE
24+
25+
CALL gp%title('TEST 11: Simple 3D plot with color palette')
26+
CALL gp%xlabel('x-axis,...')
27+
CALL gp%ylabel('y-axis,...')
28+
CALL gp%options('set style data lines')
29+
30+
CALL gp%surf(xval, yval, zval, paletteName='jet')
31+
32+
END PROGRAM main
33+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
PROGRAM main
2+
USE GlobalData, ONLY: I4B, DFP, Pi
3+
USE GridPointUtility, ONLY: Linspace, MeshGrid
4+
USE GnuPlot_Class
5+
IMPLICIT NONE
6+
TYPE(GnuPlot_) :: gp
7+
INTEGER, PARAMETER :: tsize = 55
8+
REAL(DFP), ALLOCATABLE :: xval(:, :), yval(:, :), zval(:, :)
9+
REAL(DFP), ALLOCATABLE :: xv(:)
10+
REAL(DFP) :: a = -0.5_DFP
11+
REAL(DFP) :: b = 0.5_DFP
12+
INTEGER :: nrow, ncol
13+
14+
! create 3D data
15+
xv = linspace(a, b, tsize)
16+
CALL meshgrid(xval, yval, xv, xv)
17+
nrow = SIZE(xval, 1)
18+
ncol = SIZE(xval, 2)
19+
ALLOCATE (zval(nrow, ncol))
20+
21+
zval = COS(2.0_DFP * pi * xval) * &
22+
SIN(2.0_DFP * pi * yval)
23+
24+
CALL gp%title('TEST 12: A beautiful surface plot with hidden details')
25+
CALL gp%options('set hidden3d')
26+
CALL gp%options('unset key')
27+
! CALL gp%options('set contour base')
28+
29+
CALL gp%surf(xval, yval, zval, paletteName='jet')
30+
31+
CALL gp%contour(xval, yval, zval, paletteName='set1')
32+
33+
END PROGRAM main
34+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
PROGRAM main
2+
USE GlobalData, ONLY: I4B, DFP, Pi
3+
USE GridPointUtility, ONLY: Linspace, MeshGrid
4+
USE GnuPlot_Class
5+
IMPLICIT NONE
6+
TYPE(GnuPlot_) :: gp
7+
INTEGER, PARAMETER :: ncol = 25, nrow = 45
8+
REAL(DFP) :: xv(ncol), yv(nrow), time
9+
REAL(DFP), ALLOCATABLE :: xval(:, :), yval(:, :), zval(:, :)
10+
11+
! generate data
12+
xv = linspace(0.0_DFP, 2.0_DFP * pi, ncol)
13+
yv = linspace(0.0_DFP, 2.0_DFP * pi, nrow)
14+
CALL meshgrid(xval, yval, xv, yv)
15+
zval = SIN(xval) + COS(yval)
16+
17+
CALL gp%title('TEST 13. Animation of surface plot')
18+
CALL gp%axis([0.0_DFP, 2.0 * pi, 0.0_DFP, 2.0 * pi])
19+
CALL gp%options('unset colorbox')
20+
CALL gp%options('set ticslevel 0')
21+
CALL gp%axis([0.0_DFP, 2.0 * pi, 0.0_DFP, 2.0 * pi, -2.0_DFP, 2.0_DFP])
22+
23+
CALL gp%animationStart(1.0_DFP)
24+
time = 0.050_DFP
25+
26+
DO
27+
28+
CALL gp%surf(xval, yval, SIN(time * pi / 2.0) * zval, &
29+
paletteName='jet')
30+
time = time + 0.1_DFP
31+
IF (time > 1.0_DFP) EXIT
32+
33+
END DO
34+
35+
CALL gp%animationShow()
36+
37+
END PROGRAM main
38+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
PROGRAM main
2+
USE GlobalData, ONLY: I4B, DFP, Pi
3+
USE GridPointUtility, ONLY: Linspace
4+
USE GnuPlot_Class
5+
IMPLICIT NONE
6+
TYPE(GnuPlot_) :: gp
7+
INTEGER, PARAMETER :: tsize = 80
8+
REAL(DFP) :: xval(tsize), yval(tsize), zval(tsize)
9+
REAL(DFP) :: xv(tsize)
10+
11+
xv = linspace(-2.0_DFP * pi, 2.0_DFP * pi, tsize)
12+
xval = COS(xv)
13+
yval = SIN(xv)
14+
zval = linspace(0.0_DFP, 2.0_DFP, tsize)
15+
16+
CALL gp%plot3d(x=xval, y=yval, z=zval, &
17+
lspec="with linespoints pt 8 ps 2")
18+
19+
END PROGRAM main
20+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
PROGRAM main
2+
USE GlobalData, ONLY: I4B, DFP, Pi
3+
USE GridPointUtility, ONLY: Linspace, MeshGrid
4+
USE GnuPlot_Class
5+
IMPLICIT NONE
6+
TYPE(GnuPlot_) :: gp
7+
INTEGER, PARAMETER :: tsize = 40
8+
REAL(DFP), ALLOCATABLE :: xval(:, :), yval(:, :)
9+
REAL(DFP), ALLOCATABLE :: zval1(:, :), zval2(:, :)
10+
REAL(DFP) :: xv(tsize)
11+
INTEGER :: nrow, ncol
12+
13+
xv = linspace(-pi, pi, tsize)
14+
CALL meshgrid(xval, yval, xv, xv)
15+
16+
nrow = SIZE(xval, 1)
17+
ncol = SIZE(xval, 2)
18+
ALLOCATE (zval1(nrow, ncol))
19+
ALLOCATE (zval2(nrow, ncol))
20+
21+
zval1 = SIN(xval) + COS(yval)
22+
zval2 = SIN(xval) * COS(yval)
23+
24+
CALL gp%options('unset key')
25+
CALL gp%axis([-pi, pi, -pi, pi])
26+
CALL gp%options('unset colorbox')
27+
CALL gp%options('set autoscale fix')
28+
CALL gp%options('unset tics')
29+
30+
CALL gp%title('TEST 15: Contour plot')
31+
CALL gp%multiplot(1, 2)
32+
CALL gp%surf(xval, yval, zval1)
33+
CALL gp%surf(xval, yval, zval2)
34+
35+
CALL gp%multiplot(2, 1)
36+
CALL gp%options('set colorbox')
37+
CALL gp%options('set tics')
38+
CALL gp%options('set tics font ",8"')
39+
CALL gp%contour(xval, yval, zval1, paletteName='jet')
40+
CALL gp%contour(xval, yval, zval2, paletteName='set1')
41+
42+
END PROGRAM main
43+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
PROGRAM main
2+
USE GlobalData, ONLY: I4B, DFP, Pi
3+
USE GridPointUtility, ONLY: Linspace
4+
USE GnuPlot_Class
5+
IMPLICIT NONE
6+
7+
TYPE(GnuPlot_) :: gp
8+
INTEGER(I4B), PARAMETER :: tsize1 = 50
9+
INTEGER(I4B), PARAMETER :: tsize2 = 50
10+
REAL(DFP) :: xval1(tsize1), xval2(tsize2)
11+
REAL(DFP) :: yval1(tsize1), yval2(tsize2)
12+
13+
xval1 = linspace(-pi, pi, tsize1)
14+
yval1 = SIN(xval1)
15+
16+
xval2 = linspace(0.0_DFP, 2.0_DFP * pi, tsize2)
17+
yval2 = COS(2.0_DFP * xval2)
18+
19+
! This is the maximum number of plot can be drawn at the same time
20+
! If you have more data see, you can plot can be used with matrices!
21+
CALL gp%title('TEST 2. Plot four data sets using gnuplot')
22+
CALL gp%options('set key top left; set grid')
23+
24+
CALL gp%plot(x1=xval1, y1=yval1, ls1='title "sin(x)"', &
25+
x2=xval2, y2=yval2, ls2='with lp lt 6 title "cos(2x)"', &
26+
x3=xval2, y3=2.0_DFP * yval2, ls3='title "2cos(2x)" lt 7', &
27+
x4=xval2, y4=0.5_DFP * yval2, &
28+
ls4='title "0.5cos(2x)" with points pt 8')
29+
30+
END PROGRAM main
31+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
PROGRAM main
2+
USE GlobalData, ONLY: I4B, DFP, Pi
3+
USE GridPointUtility, ONLY: Linspace
4+
USE GnuPlot_Class
5+
IMPLICIT NONE
6+
TYPE(GnuPlot_) :: gp
7+
INTEGER(i4b), PARAMETER :: tsize = 125
8+
REAL(DFP) :: xval(tsize)
9+
REAL(DFP) :: yval(tsize)
10+
11+
xval = linspace(0.0_DFP, pi * 2.0_DFP, tsize)
12+
yval = SIN(6.0_DFP * xval) * EXP(-xval)
13+
14+
CALL gp%title('TEST 2. A sample shows sin(x) and its zero on the plot')
15+
CALL gp%xlabel('x, rad')
16+
CALL gp%ylabel('sin(x), dimensionless')
17+
CALL gp%options('set grid')
18+
19+
CALL gp%plot(x1=xval, y1=yval, &
20+
ls1='title "sin(x)" with lines lt 2 lw 3', &
21+
x2=[pi], y2=[0.D0], &
22+
ls2='title "zero" with points pt 7 ps 3 lc rgb "#FF0000"')
23+
24+
END PROGRAM main
25+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
PROGRAM main
2+
USE GlobalData, ONLY: I4B, DFP, Pi
3+
USE GridPointUtility, ONLY: Linspace
4+
USE GnuPlot_Class
5+
IMPLICIT NONE
6+
TYPE(GnuPlot_) :: gp
7+
INTEGER(I4B), PARAMETER :: nrow = 25, ncol = 6
8+
INTEGER(I4B) :: ii
9+
REAL(DFP) :: tf, vo, g
10+
REAL(DFP) :: tval(nrow), yval(nrow, ncol)
11+
12+
tf = 10.0_DFP
13+
g = 32.0_DFP;
14+
tval = linspace(0.0_DFP, tf, nrow)
15+
DO ii = 1, ncol
16+
vo = 25.0_DFP * ii
17+
yval(:, ii) = vo * tval - 0.5_DFP * g * tval**2
18+
END DO
19+
20+
CALL gp%title('TEST 8.1: Plotting a Matrix against a vector')
21+
CALL gp%xlabel('t, sec')
22+
CALL gp%ylabel('y, feet')
23+
CALL gp%options('set xrange[0:10]; set yrange [0:400];')
24+
CALL gp%plot(tval, yval)
25+
26+
CALL gp%title('TEST 8.2: Matrix plot, legends and linespec')
27+
CALL gp%plot(tval, 2.0D0 * yval(:, 3:4), &
28+
lspec='t "vo=100" w lp lt 6 ps 3 lw 2;'// &
29+
't "v=125"w lp lt 7 ps 3 lw 2 lc rgb "#ad6000"')
30+
31+
END PROGRAM main
32+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
PROGRAM main
2+
USE GlobalData, ONLY: I4B, DFP, Pi
3+
USE GridPointUtility, ONLY: Linspace
4+
USE GnuPlot_Class
5+
IMPLICIT NONE
6+
TYPE(GnuPlot_) :: gp
7+
INTEGER, PARAMETER :: tsize = 35
8+
REAL(DFP) :: xval(tsize)
9+
REAL(DFP) :: yval(tsize), zval(tsize)
10+
INTEGER(I4B) :: ii
11+
12+
xval = linspace(-pi, pi, tsize)
13+
yval = 0.0_DFP
14+
zval = 0.0_DFP
15+
CALL gp%animationStart(1.0_DFP)
16+
CALL gp%axis([-pi, pi, -1.2_DFP, 1.2_DFP])
17+
CALL gp%options('set grid')
18+
19+
yval = SIN(xval)
20+
zval = COS(xval)
21+
22+
DO ii = 1, tsize, 5
23+
CALL gp%plot(x1=xval(1:ii), y1=yval(1:ii), &
24+
ls1='w lines lc "red" lw 2', &
25+
x2=xval(ii:ii), y2=yval(ii:ii), &
26+
ls2='w points ps 3 pt 7 lc "red"', &
27+
x3=xval(1:ii), y3=zval(1:ii), &
28+
ls3='w lines lc "blue" lw 2', &
29+
x4=xval(ii:ii), y4=zval(ii:ii), &
30+
ls4='w points ps 3 pt 7 lc "blue"')
31+
END DO
32+
33+
CALL gp%animationShow()
34+
35+
END PROGRAM main
36+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
PROGRAM main
2+
USE GlobalData, ONLY: I4B, DFP, Pi
3+
USE GridPointUtility, ONLY: Linspace
4+
USE GnuPlot_Class
5+
IMPLICIT NONE
6+
TYPE(GnuPlot_) :: gp
7+
INTEGER, PARAMETER :: tsize = 125
8+
REAL(DFP) :: tval(tsize), rval(tsize)
9+
10+
CALL gp%options("set polar; set trange [-pi:pi]")
11+
12+
tval = linspace(-pi, pi, tsize)
13+
rval = SIN(3.0_DFP * tval)
14+
15+
CALL gp%title("TEST 6: simple polar plot")
16+
CALL gp%xlabel("x,...")
17+
CALL gp%ylabel("y,...")
18+
19+
! CALL gp%plot(tval, rval, 'title "sin(3t)"')
20+
CALL gp%plot(tval, COS(4.0_DFP * tval))
21+
22+
END PROGRAM main
23+

0 commit comments

Comments
 (0)