gnuplot tutorial (GlenMacLachlan) [Youtube] 핵심 내용 정리 by 바죠

GNU plot Tutorial  (저자: )

아래의 내용은 소프트웨어 gnuplot에 대한 5개의 유튜브 동영상 강의 내용을 동영상 별로 주요 내용을 간략하게 정리한 것이다.
동영상의 제작자 GlenMacLachlan은 군더더기 없이 잘 설명한다. 물론, gnuplot에 대한 기본적인 개념을 알고 있는 사람에 대한것이다. 하지만, 목표 중심적으로 아주 잘 만들어진 동영상 자료이다. 그리고 아주 유용한 동영상 자료이다.
특별히, 스크립트를 만들어서 많은 명령어들을 순서대로 파일에 저장하고 이를 순서대로 gnuplot에서 불러들이면서 그림을 gif  파일로 저장하는 방법을 소개한다.
이를 이용하면 움직이는 그래프(gif 파일)를 쉽게 만들어 낼 수 있다. 움직이는 그래프, gif 파일을 쉽게 만들 수 있는 환경을 gnuplot이 제공한다.

아래의 예처럼 그래프가 살아서 움직인다!
물론 일반적인 동영상 만들기는 따로 있다. 한장 한장 정성드려서 그림들을 준비한 다음 배치할 수 있다. 이러한 부분에서 결국 배치명령어를 활용해야만 할것이다. http://incredible.egloos.com/4661344

출처: http://gnuplot.sourceforge.net/demo/animate2.html

필요하면 avi 파일을 발표할 때 많이 사용하는 편이다. ppt에서 avi 파일을 불려 들여서 발표할 수 있다.
하지만, 아직까지 움직이는 그래프(데이터 제시)를 활용하여 데이터 발표한 적은 없는 것 같다.  
아래의 기능을 몇 가지 응용하면 움직이는 데이터(그래프)를 발표에서 보여 줄 수 있을 것 같다.

-------------------------------
[1] http://www.youtube.com/watch?v=9k-l_ol9jok&feature=player_detailpage
 ()
기본적인 그래프 그리기 설명

set term wxt enhanced
plot 'brownian.dat', 'normal.dat'

plot 'brownian.dat', 'normal.dat' lc rgb 'blue'
plot 'brownian.dat' lc rgb 'green', 'normal.dat' lc rgb 'red'

set ylabel "This is y label"
set xlabel '{/Symbol abt}'

plot [:1024] [:90] 'brownian.dat' lc rgb 'black' title 'Brownian', 'normal.dat' lc rgb 'green' title 'Normal'

그림에 Brownian 이 나타난다. 기본으로 데이터 파일 이름(brownian.dat)이 디폴트로 나타나는데 이를 피하는 방법이다.
lc -> line color


set xlabel '{/Symbol abt}'   -> alpha, beta, tau


set term postscript eps enhanced "Helvetica" 24


-------------------------------
[2] http://www.youtube.com/watch?v=GEiwrfo0uzg&feature=player_detailpage(Fitting Data)
 ()
다항식에 피팅하기

포트란, 파이썬을 이용한 다항식 피팅하기:  http://incredible.egloos.com/4678064

{x, y}형식의 데이터를 활용하여 그림을 그리고 적절한 다항식 피팅을 한다.
구간별로 피팅을 한다.
plot [500:1024] 'brownian.dat'  w l  lc rgb 'black'
f(x)=a+b*x
fit [500:1024] f(x) 'brownian.dat' via a,b

plot [500:1024] 'brownian.dat' w l lc rgb 'black', f(x) lw 3 lc rgb 'black'

f(x)= a+b*x +c*x*x
fit [275:675] f(x)  'brownian.dat' via a,b,c
plot [275:657] 'brownian.dat' w l lc rgb 'black', f(x) lw 3 lc rgb 'black'


-------------------------------
[3] http://www.youtube.com/watch?v=-XtOoSWigr0&feature=player_detailpage(Animations with gnuplot)
 ()
쉘 스크립트를 활용하여 애니메이션 그림 준비하기 설명

$for ((i=0; i < 10 ; i++))
do
echo $i
done

$for ((i=-50; i < 50; i++)); do  echo -e " set sample 500; set  set yrange[-50:50] ; pl $i*sin(x) \n"; done  |  gnuplot -persist

$for ((i=-50; i<50; i++)); do echo -e " set pm3d; set isosample 40 ; spl [:] [:] [-50:50] $i*sin(x)*cos(y) with pm3d \n" ; done | gnuplot



-------------------------------
[4] http://www.youtube.com/watch?v=upitol8A0yQ&feature=player_detailpage(Multiple graphs on a single plot)
 ()
한 장의 종이에 여러 가지 그림을 동시에 표현하기 설명

4 칼럼 데이터
lorenz.dat

reset

#set term postscript eps enhanced
#set output 'lorenz.eps'

set size 1,1
set multiplot

# First
set size 0.5,0.5
set origin 0.,0.5
set xtics 0, 25000
set xlabel 'Time'
set ylabel 'X'
set title 'First'
plot 'lorenz.dat' using 1:2 w l lw 0.5 lc rgb 'black'
set xtics auto

# Second
set origin 0.5,0.5
set xlabel 'X'
set ylabel 'Y'
set title 'Second'
plot 'lorenz.dat' using 2:3 w l lw 0.5 lc rgb 'black'

# Third,  3D plot
set size 1,0.5
set origin 0,0
set view 60,15
set ytics -20, 10
set ztics 0,20
set xlabel 'X' offset 0,-1
set ylabel 'Y'
set zlabel 'Z'
set title 'Third'
splot 'lorenz.dat' using 2:3:4 w l lw 0.5 lc rgb 'black' 
set ytics auto
set ztics auto

unset multiplot

-------------------------------
[5] http://www.youtube.com/watch?v=lt7AxPIeihQ&feature=player_detailpage(Creating Animated GIFs)
 ()
애니메이션 그림 그리기 설명

gnuplot 안에서
help term gif

temp.dat라는 데이터 파일이 한줄에 하나의 실수값(y 축에 표시 될 값)을 가지고 출력되어  있는 경우를 생각한다.
총 1024 줄로 된 데이터라고 가정한다.

모든 프레임은 한 줄에 표시되어야 하고 두 줄의 블랭크를 포함해야 한다.

아래와 같은 명령어를 이용하여 데이터를 {x, y} 형식으로 정리해 본다. 한 줄에 두 개의 값들을 가지게 된다.
데이터 값들 사이에는 두 줄씩 뛰어쓰기를 하려고 한다.
 
블랭크로 된 두 줄을 만들고 x 축값을 순서대로 할당한다. 
이를 정해진 파일에 저장한다.

cat temp.dat | awk '{printf("\n\n") ; print c++, $0}'  > brownian.dat 

gnuplot에서 한 번 그려 본다.
pl "brownian.dat"
기본적인 그림으로 한 번 그려 본 것이다.

아래와 같은 쉘 명령어들을 이용하여 gnuplot 명령어들을 연속적으로 만들고 명령어들 전체를 하나의 파일에 저장한다. 
즉, gnuplot에서 활용하게 될  배치파일을 만든다.

$ for ( (i=0; i < 1024; i++)) do echo "plot [0:1023] [-35:5] 'brownian.dat' using 1:2  index $i  ps 2 pt 6"; done  > gnu_animate. gp

일반 컴퓨터 프로그램(C, Fortran, Python)으로 위의 내용을 프린트해서 파일에 저장해도 된다.

1:2              ->  x, y 를 이용해서 그림을 그림.
point size    ->  ps
pt 6             ->  가운데가 빈 동그라미 심볼


gnuplot 에서 들어가서 아래와 같은 명령어 파일을 불러 들인다. 미리 준비한 명령어를 이용해서 gif 그림을 그릴 수 있다.

set term gif animate delay 50
set output 'test.gif'
load 'gnu_animate.gp'
 
-------------------------------
파일 g2에서 2번째, 3번째 컬럼만 뽑아내어 {x, y} 형식의 데이터를 만들어 냄. 
총 936줄의 데이터.
데이터 값 변환을 추가함. 14로 나누기.
두 줄의 빈 줄을 확보한 새로운 파일 g22 만들기.
gnuplot 명령어들을 만들 때, xrange, yrange를 모두 동일한 값들로 고정을 해야함.

$ cat g2|awk '{print $2/14, $3/14; print ""; print ""}'>g22
$ for ((i=0; i < 936; i++)) do echo "plot [18:23][-5.3:-4.8] 'g22' using 1:2 index $i ps 2 pt 6" ; done >g.gp
gnuplot에서
set term gif animate delay 50
set output 'test.gif'
load 'g.gp'
quit
$ animate test.gif



---------------------------------
convert  -delay 50 -loop  1000 -crop  0x0  \
                plot1.png plot2.png plot3.png plot4.png  .... movie.gif

display movie.gif
animate movie.gif
---------------------------------


덧글

  • dyanos 2012/02/29 08:51 # 삭제 답글

    좋은 정보감사합니다 ㅎㅎ
  • 바죠 2012/02/29 08:54 # 삭제

    gnuplot 많은 분들이 사용하시는데, 뒷북이지만, 그래도 그래프를 애니메이션으로 만들어서 사용하는 기술은 배워 둘 만 하군요.
  • 바죠 2016/01/19 11:33 # 답글

    cat g2|awk '{print $2, $3; print ""; print ""}'

댓글 입력 영역

최근 포토로그