gnuplot Simple Manual
출처 : http://my.netian.com/~770110cat/gnuplot.html
글쓴이 : 야옹고양이(cybercat) =^.^=
※ 본 내용은 Colleage of Natural Sciences Computing Laboratories University of Northern Iowa Cedar Falls, IA 50614에서 작성한 Introduction to gnuplot을
우리 현실에 맞게 옮긴 것입니다. 충남대학교 물리학과 오병성 교수님이 개략적으로 옮기신 내용을 다시 한번 알기 쉽게 올린 것입니다. = ^.^ =
[ GNUplot 의 초기 화면 ]
: GNUplot은 2차원 및 3차원 그림표를 그릴 수 있는 명령어를 입력하는 형식의 프로그램(command line driven program)입니다. Mathematica나 MatLab과 같은 프로그램도 있으나 학생들이 사용하기에는 매우 비싼 프로그램이라 하겠지요. 하지만 GNUplot은 Linux 환경에서 개발된 프로그램으로써 free-software입니다. 웹상에서 쉽게 구하실 수 있으며 그 용량 또한 매우 적습니다.
: GNUplot은 위의 그림과 같이 몇 개 않되는 화일로 구성되어 있습니다. demo 폴더에는 임의의 예제 파일이 들어 있으므로 제외하면 더 작겠죠? ^^; 그림에서 보는 바와 같이 그 크기는 demo 파일 포함 1.97MB로 되어 매우 작습니다. 하지만 위에서 재시한 고가의 프로그램과 견주어 그 성능이 뒤지지 않는다고 저는 생각합니다. 물론 위에서 제시한 고가의 프로그램에 비해서 떨어지는 기능들이 있기는 하지만 초보자들이 쉽게 무난하게 사용할 수 있는 프로그램이라 하겠습니다. 그럼 지금부터 GNUplot에 대한 간단한 설명과 예시를 들어서 쉽게 사용하실 수 있도록 하겠습니다.
▨ 목 차 ( Index )
1. Windows용 GNUplot ( GNUplot for Windows )
2. Windows OS에 GNUplot 설치하기 ( Installing GNUplot on your Windows OS )
3. GNUplot 시작하기와 끝내기 ( Starting and Quitting GNUplot )
4. GNUplot에서 함수 사용하기 ( Specifying Functions in GNUplot )
5. 간단한 예제 ( A Simple Example )
6. 2차원 그림표 ( 2D plots )
7. 3차원 그림표 ( 3D plots )
(1) 3차원 그림에서의 보이지 않는 선 숨기기 ( Hidden 3D View )
(2) 3차원 그림에서의 해상도 높이기 ( Increasing Resolution of 3D Plots )
(3) 등고선 표시하기 ( Adding Contour Lines )
(4) 조망 바꾸기 ( Changing Perspective )
8. 매개 변수 그림표 그리기 ( Parametric Plots )
9. 극좌표 그림표 ( Polar Plots )
10. 자료 그리기 ( Plotting Data )
(1) 2차원 자료 그리기 (2D Data Plots )
(2) 3차원 자료 그리기 ( 3D Data Plots )
11. 출력 만들기 ( Generating Output )
(1) 프린터로 직접 인쇄하기 ( Printing directly to a printer )
(2) Postscript file로 출력하기 ( Outputing to a postscript file )
(3) Graphic file로 출력하기 ( Outputing to a graphics file )
12. 쓸 만한 요령 ( Nifty Tricks )
(1) file로 작업 저장 또는 시작하기 ( Saving and Loading work from files )
(2) Log scale 사용하기 ( Using a Log Scale )
(3) 그림표에 눈금 격자 나타내기 ( Displaying a grid behind graph )
(4) 여러 그림표 겹쳐 보이기 ( Overlaying Multiple Plots )
(5) 선의 모양 바꾸기 ( Changing style of lines )
(6) 수식 값 계산하기 ( Evaluating Expressions )
(7) 함수 정의하기 ( Defining your own functions )
(8) 변수 바꾸기 ( Changing variables used )
(9) 축 이름 바꾸기 ( Changing axis labels )
(10) 그림표의 외관 바꾸기 ( Changing general apperance of plot )
: 프로그램 내부에 온라인 설명서가 있으니 필요할 때는 명령어로 help를 넣으면 됩니다.
1. Windows용 GNUplot ( GNUplot for Windows )
: Windows 용 GNUplot의 설정은 다른 프로그램과 같이 복잡하지 않다. 물론 Windows 용 다른 프로그램 들로 Setup 툴로써 매우 간단하게 되어 있지만 내부적으로 보면 상당히 복잡하다 할 수 있다. 하지만 Windows 용 GNUplot은 단순히 원하는 디렉토리를 만들고 GNUplot용 파일들을 옮기기만 하면 된다. 특별히 설정을 해야 한다거나 한 것은 없다. 단순히 GNUplot용 파일들을 한 디렉토리에 복사해 넣기만 하면 되는 것이다. 다만 다른 것은 Windows 95부터 도입이 되던 긴 파일이름의 지원은 되지 않는다. 즉, 8자보다 긴 파일의 이름은 사용할 수 없다. 사용하더라도 파일 이름은 8자 글자수의 안에서 “~숫자”의 형태로 나타나게 된다. 즉, DOS 형태의 파일명을 따르는 것이다.
2. Windows OS에 GNUplot 설치하기 ( Installing GNUplot on your Windows OS )
: 위의 1번의 내용을 살펴보면 된다. 끝~ *^^*
3. GNUplot 시작하기와 끝내기 ( Starting and Quitting GNUplot )
: 명령어 라인에 “exit” 나 “quit”를 넣고 엔터를 치면 종료가 된다. 시작과 끝은 다른 윈도우용 프로그램과 동일하다 하겠다. 다만 명령어로 종료를 하는 것이 있을 뿐이다.
4. GNUplot에서 함수 사용하기 ( Specifying Functions in GNUplot )
: 표현하려는 함수가 2차원 일 경우 독립변수는 x로, 3차원 일 경우는 독립변수가 x, y 2가지가 쓰인다. 산술 연산자로는 곱하기는 *, 나누기는 /, 지수는 **가 쓰인다. 즉, 3x는 3*x와 같이 표현하면 된다. GNUplot에는 여러 가지 내장된 함수들이 있다. 더 자세히 보려면 help functions를 명령어에 넣고서 엔터를 치면 된다. 예를 들어보자. 일반적인 표준 삼각 함수는 우리가 사용하는 그대로 sin, cos, tan로 쓰이며, 일반적인 pi = 3.14159는 pi라는 명령어를 사용하면 된다. 역 삼각함수는 asin, acos, atan 이고, hyperbolic 삼각함수는 sinh, cosh, tanh 이다. 그리고 exp는 e, 그리고 밑수가 e인 로그함수는 log, 보통의 경우는 ln을 사용한다.
5. 간단한 예제 ( A Simple Example )
: 자 그러면 여기서 간단한 예제를 살펴 보도록 하자. GNUplot 프로그램을 실행시킨 후 plot sin(x) 라고 넣은 후 실행시켜보도록 하자.
: 그러면 위의 그림과 같은 새로운 창이 결과물을 나타내어 줄 것이다. 그리고 GNUplot에서는 사용한 명령어들이 저장이 되므로 위아래 화살표를 누름으로써 명령어들을 다시 아주 간단하게 넣을 수 있다. 나머지 예들은 직접 한번 해 보도록 한다. ^^;;;
6. 2차원 그림표 ( 2D plots )
: 자 그러면 이제 2차원 그림표에 대해 더 알아보도록 하자. 2차원 그래프를 나타내기 위해서는 간단하다. “plot 원하는 함수”의 형식으로 명령어 입력란에 넣은 후 엔터를 치기만 하면 된다. 예를 들어 x^3의 그래프를 얻어 보도록 하자.
: 위의 그림과 같은 그래프를 쉽게 얻을 수 있을 것이다. *^^* GNUplot은 그 그래프의 구간을 자동으로 잡는다. 하지만 우리가 원하는 구간을 얻기 위해서는 구간을 어떤 부분을 할 것인지 입력해 주어야 한다. cosh(x) 그래프를 x 구간은 -10~10, y 구간은 0~12000 으로 나타내어 보자.
: 매우 간단하다. 위의 그림에서와 같이 사용법은 plot 이라는 명령어후에 구간을 넣어 주도록 한다. 즉, “plot [x의 구간][y의 구간] 표현하려는 함수” 와 같은 형식으로 넣어주면 된다. 예를 들어, x의 구간은 자동으로 잡고 y의 구간은 0~12000 으로 나타내려고 한다면, 위의 그래프는 “plot [] [0:12000] cosh(x)” 라는 명령어를 사용하면 된다. y의 구간은 자동으로 잡고 x의 구간만을 잡으려고 한다면 “plot [-10:10] cosh(x)” 라는 명령어를 사용하면 된다.
그러면 이제 나타내려는 모든 그래프의 구간을 아예 설정을 해 주려고 한다면 다음과 같다. “set xrange [구간]” 이라는 명령어를 사용하면 된다. 그러면 그 명령어를 선언한 후 부터는 모든 출력 그래프들이 설정된 x구간의 범위에서 나타내어지게 된다. y의 구간을 설정하려면 아시겠죠? ^^; 자, 그러면 다시 자동으로 설정이 되게 만들어 보도록 하자. 매우 간단하다. 명령어에 “set autoscale x 또는 y” 라고 선언해 주면 된다. 매우 간단하지 않은가? *^^*
7. 3차원 그림표 ( 3D plots )
(1) 3차원 그림에서의 보이지 않는 선 숨기기 ( Hidden 3D View )
: 우선 3차원의 그래프를 그려 보도록 하자. 명령어를 2차원에서의 “plot”에서, “splot” 이라는 명령어를 사용하면 된다. 그러면 한번 예제를 보도록 하자. sinh(x) 라는 그래프를 3차원적인 그래프를 얻어 보도록 하자.
: ㅋㅋㅋ 여전히 간단하지 않은가? ^^;;; 자아 그러면 좀더 화려한 그래프를 보도록 하자. z = 2(x^2 + y^2)exp(-x^2 -y^2)의 그래프를 x, y는 -2~2의 구간에서, z는 -1~1 사이에서의 그래프를 나타내어 보도록 하자.
: 아~ 이것도 너무 간단하지 않은가? ^^;;; 자아 그러면 이 그래프에서 가려지는 부분은 실제로 우리가 본다면 보이지 않을 것이다. 이 그래프는 그 보이지 않는 부분까지 나타내어 주고 있다. 그 보이지 않는 선을 한번 없애보도록 하자. 그 내용 또한 무쟈게 간단하당~ *^^*
: 여기에서 사용된 명령어는 우선 보이지 않는 선을 나타내지 않기 위해서 “set hidden3d” 라는 명령어를 사용하였고, “replot” 이라는 명령어가 사용되고 있다. 보이지 않는 선을 감추기 위함이 첫 번째 명령어이다. 영어를 조금만 한다면 쉽게 알 것이다. 그리고 다음 명령어는 GNUplot은 replot 이라는 명령어로 마지막으로 나타낸 그래프를 replot 이라는 명령어로 다시 나타낼 수 있다. 하지만 그 설정들은 지금까지 설정해 온 것이 적용이 된다.
(2) 3차원 그림에서의 해상도 높이기 ( Increasing Resolution of 3D Plots )
: 자아 위의 그림을 보면 그래프에 각이 져있어서 그리 매끄러운 그래프가 아닐 것이다. 그러면 이 그래프를 매끄럽게 만드는 작업을 해 보도록 하자. 쩝 이것또한 매우 간단하다. 무쟈게~ *^^* 즉 해상도를 높인다고 한다.
: 자아 어떠한가? 간단하지 않은가? ㅋㅋㅋ ^^;;; 우선은 해상도 조절을 위해서 “set isosamples” 라는 명령어를 사용한다. 3차원인 경우이다. 형식은 즉 “set isosamples x_rate, y_rate” 라는 형식을 가지면 된다. 2차원인 경우 “set samples” 라는 명령어를 사용하면 된다. 즉 “set samples x_rate” 이다. 해상도의 결정은 즉 독립 변수의 숫자로써 조절을 하게 된다. 2차원인 경우 x의 숫자를 넣어주고, 3차원인 경우 x와 y의 숫자를 넣어준다. 그리고 해상도를 높임으로써 그래프 표면의 등고선의 갯수가 늘어남을 볼 수 있을 것이다. 좀 그래프가 징그럽기도 하다. ^^;;; 이 해상도는 GNUplot 이 실행되면서 초기값(default value)을 가지고 있다. 그 값은 10이다. 이 해상도가 늘어나면서 그래프를 표현하는 시간이 길어지게 된다. 그만큼 컴퓨터가 일을 해야 한다는 것이다. 해상도는 가능하면 100을 넘기지 않도록 한다. 100을 넘으면 필자가 해 본 결과 뭐 요즘 컴퓨터가 성능이 좋으니 시간은 상관 없으나 그래프에서 그리 커다란 차이점을 느끼지 못한다.
(3) 등고선 표시하기 ( Adding Contour Lines )
: 자아 그러면 이제 그래프에 등고선(Contour)을 표시해 보도록 하자. 등고선은 3가지로 나타낸다. 첫째, 표시하지 않기, 둘째, 그래프의 표면에 표시하기, 셋째, 마치 위에서 빛을 밝혀 주듯이 바닥에 나타내어 주기 이다. 자아 우선은 그래프의 표면에 나타내어 주도록 하자.
: 명령어는 다음과 같다. “set contour 형식” 이다. 형식으로는 나타내지 않을 경우, nocontour, 표면일 경우 surface, 바닥일 경우 base 이다. 위의 경우는 우선은 해상도를 초기값인 10으로 해 주고, 표면에 나타내 주기 위해서 “set contour surface” 명령어를 사용해 주었다. 그래프에 잘 나타나지는 않았지만 표시된 숫자를 보도록 하자. 화면의 오른쪽 상단이다. 그래프 선의 색깔과 숫자가 있을 것이다. 우리가 쉽게 짐작할 수 있듯이 그래프의 선 색에따른 값을 표시한 것이다. 자 그러면 이제는 등고선을 바닥에 나타내 보도록 하자.
: 여기서 의미하는 바닥이란 독립 변수가 이루는 평면을 말한다. 즉, x-y 평면을 말한다. 등고선은 3차원 그래프에서만 나타나는 것이다. 그러면 이제는 등고선을 없애 보도록 하자.
: 아주 간단하지 않은가? ^^;;; 위의 그래프에서는 등고선이 표면에 나타난 경우와 없는 경우가 차이가 없어 보일 것이다. 하지만 다른점이 있다. 그래프 특성상 그것이 잘 나타나지 않았을 뿐이다.
(4) 조망 바꾸기 ( Changing Perspective )
: 얼핏 보기에 이 말이 이해가 가지 않을 것이다. 하지만 간단하다. 즉, 관찰자의 시점을 바꿔주는 명령어라 생각하면 된다. 그 형식은 다음과 같다.
“set view horizontal_angle, vertical_angle, zoom_rate””
이것은 좌표축을 조금 이해해야 할 듯 하다. 첫 번째 인자는 수평각을, 두 번째 인자는 수직각을, 세 번째 인자는 확대 비율을 나타낸다. 말이 조금 어려움으로 예제를 통해서 알아보도록 하자.
: 우선은 보이지 않는 면을 감추기 위해서 “set hidden3d”, 그리고 해상도를 “set isosamples 30” 으로 맞춘후, 그래프의 x-y 구간을 위와 같이 설정하고, 함수 z = (x^2 + 3 * y^2) * exp(1 – (x^2 + y^2))을 나타내어 준 것이다. 이 그래프의 관찰자 시점은 GNUplot 이 실행되면서 가지고 있는 초기값(defaule value)로 그려진 것이다. 자아 그러면 이제부터 그 값들을 조금씩 바꿔 가면서 보도록 하자.
: 위의 그래프는 관찰자의 시점을 수평각 80, 수직각 30으로 나타낸 것이다.
: 위의 그림은 관찰자의 시점을 수평각 40, 수직각 30으로 바꿔서 나타낸 것이다.
: 위의 그래프는 관찰자의 시점을 수평각을 60, 수직각을 30, 확대 비율을 2로 나타낸 그림이다. 자아 예제를 통해서 쉽게 이해를 했을 것이다. 수평각 및 수직각이 나타내는 것은 구면극좌표계(Spherical Polar Coordinate)를 따르는 것 같다. 필자의 생각 ^^;;;
8. 매개 변수 그림표 그리기 ( Parametric Plots )
: GNUplot 에서는 매개 변수를 이용한 함수의 표현이 가능하다. 매개 변수를 사용하기 위해서는 우선 “set parametric”을 선언해 주어야 한다. 그리고 매개 변수의 범위를 설정하기 위해서 “set trange [?:?]”를 사용한다. 예를 하나 들어서 알아보도록 하자. 우선 어떤 그래프가 예를 들어서 2차원의 그래프가 나오기 위해서는 x, y의 값이 주어저야 한다. 그런데 이 x, y의 값이 어떤 값에 의해서 변한다고 하자. 바로이 값이 매개 변수인 것이다. x = 5 * cos(t), y = 2 * sin(t) 즉 여기서 t가 매개 변수로 작용하는그래프를 표시해 보도록 하자. GNUplot 에서는 2차원에서 독립 변수로 x가 쓰이듯이 매개 변수로는 t가 사용된다. 그리고 이 t의 범위를 0~10 까지 잡아서 나타내 보도록 하자.
: 위의 그림에서 처음에 “set parametric” 으로 매개 변수의 사용을 선언하고 있다. 그리고 x의 범위를 지정해 주기 위해서 “set xrange [-6:6]”, y의 범위를 정해 주기 위해서 “set yrange [-6:6]”, 매개 변수 t의 범위를 지정해 주기 위해서 “set trange [0:10]”을 사용하고 있고, 해상도를 조정하기 위해서 “set iso samples 60″을 사용하고 있다. 그리고 마지막으로 표현할 함수를 나타내 주었다. “plot 5*cos(t), 2*sin(t)” 예제를 보고 나니 더 쉽게 이해가 갈 것입니다. ^^
이제는 3차원 매개 변수 그래프를나타내 보도록 하겠습니다. 즉, 매개 변수가 2개인 경우입니다. 위에서와 같은 경우는 2차원 매개 변수의 사용 경우로 변수가 1개가 쓰였고 이 경우는 3차원으로 2개의 매개 변수가 쓰이는 경우입니다. 1개의 매개 변수가 사용될 경우 t를 사용하였지만, 2개의 매개 변수가 쓰일 경우는 변수가 u, v가 사용됩니다. 나머지 사용법은 2차원의 경우와 동일합니다. 자 이번에도 예제를 들어서 알아보도록 하겠습니다. x, y, z의 범위를 지정하고 또 매개 변수인 u, v의 범위도 지정해 나타내 보도록 하겠습니다.
: 위와 같이 각각 매개 변수의 범위를 지정해 주고 또한 각각의 독립 변수의 범위도 주어진 경우입니다. 특별히 다른 설명은 덧붙이지 않아도 되겠지요? ^^;;;
9. 극좌표 그림표 ( Polar Plots )
: 극좌표(Polar Coordinate)를 아용해서 그래프를 그리는 기능입니다. 극좌표에서 독립 변수 t는 보통 theta로 표시하는 각도를 의미합니다. 극좌표의 그래프는 항상 직사각형에 그려지고 그래프의 크기를 바꾸려면 “set yrange” 명령을 사용합니다. 이 명령을 사용하면 수평 및 수직 범위 모두가 바뀌게 됩니다. 예제를 통해서 보도록 하겠습니다.
: 위에서 보시면 우선은 극좌표를 사용하기 위해서 “set polar”를 선언하였습니다. 그리고 다시 원래 상태로 돌아오기 위해서는 “set nopolar”를 선언하시면 됩니다. 다음은 범위를 바꾸는 경우를 보도록 하겠습니다.
: 범위를 다시 자동 설정으로 바꾸시기 위해서는 간단히 “set autoscale y” 하시면 됩니다. 그리고 여기서 쓰이는 독립 변수인 t는 초기값으로(default value) 그 각도의 단위가 radian으로 되어 있습니다. 이 단위를 degree로 바꾸기 위해서는 간단히 “set angles degrees(radians)” 하시면 됩니다.
자 이제는 3차원 극좌표계를 그려보도록 하겠습니다. 이 기능은 두가지가 있습니다. 좌표의 형식에 따라 구좌표계(Spherical Coordinate)와 원통좌표계(Cylindrical Coordinate)가 있습니다. 이 좌표계들이 궁금하시면 저와 접촉하시거나 메일을 보내 주십시오. 3차원 극좌표계를 이용해서 그래프를 나타내기 위해서는 3차원 자료(data)에서만 가능합니다. 자세한 사항은 “help set mapping”을 참조하시기 바랍니다.
10. 자료 그리기 ( Plotting Data )
(1) 2차원 자료 그리기 (2D Data Plots )
: 우선은 자료 파일을 이용하여 2차원 그래프를 그려보도록 하겠습니다. 예제를 통해서 알아보도록 하겠습니다. 아래와 같은 “test.txt” 라는 데이터 파일이 있다고 합시다. 우선은 데이터 파일에서 #표시된 부분은 모두 주석문(comments) 처리 됩니다. 즉 아무런 의미도 아니라는 뜻이지요.
: 그러면 이제 위의 데이터 파일을 이용해서 2차원 그래프를 그려보도록 하겠습니다. 2차원 그래프는 두가지 요소 즉, x, y의 값으로 그래프를 그리지요.
: 위의 데이터 파일에서 GNUplot은 열의 요소로(column) 데이터를 추출해 냅니다. 우선은 2차원 그래프를 그리는데 필요한 요소가 2가지 x, y 이므로 2개의 열의 요소만으로 그래프를 그리게 됩니다. 위의 예제는그래서 x는 첫 번째 열의 요소를 받아서 1, 2, 3, 4, 5, …….입니다. y는 두 번째 열의 요소를 추출해서 그리게 됩니다. 이해가 가시지요? ^^;
(2) 3차원 자료 그리기 ( 3D Data Plots )
: 자아 그러면 이제 위의 예제 데이터 파일로 3차원 그래프를 그려 보도록 하겠습니다.
: 3차원 그래프를 그리기 위해서 splot 이라는 명령어를 사용했습니다. 간단하게 이것은 데이터 파일에서 3차원 그래프를 그리기 위해서 3개의 열을 추출해 냅니다. 3차원 그래프를 그리기 위해서 3개의 요소가 필요하므로 ^^. 이해가 가시지요? 그럼 이 단원은 여기서 마물~ *^^*
11. 출력 만들기 ( Generating Output )
(1) 프린터로 직접 인쇄하기 ( Printing directly to a printer )
: 프린트로 직접 인쇄하기 위해서는 뭐 우선은 프린터가 연결이 되어 있고, 프린터 드라이버도 제대로 설치가 되어있어야 하겠지요. 그리고 프린터기가 켜져 있어야 하겠지요. ^^;;; 자아 그러면 프린트 하기 위해서는 여러 방법이 있겠지만 우선은 그래프 위에서 오른쪽 마우스 버튼을 눌러서 팝업 메뉴를 띄우면 ‘Print…’ 라는 메뉴가 있습니다. 그것을 클릭하면 프린트 메뉴가 뜹니다. 적당히 조절해서 프린트하시면 됩니다. 간단간단 *^^*
[프린트 메뉴]
(2) Postscript file로 출력하기 ( Outputing to a postscript file )
: 자아 이제는 Postscript File로 출력을 해 보겠습니다. Postscript FIle이 뭐여여? 라고 물으시면 찾아보셔여~ 라고 대답하겠습니다. 그거까지 설명해 드릴 여력이 엾군요. ^^;;; 이 Postscript File로 출력하기 위해서는 GNUplot 상에서 terminal을 바꿔 줘야 합니다. 말이 어려운가요? 절대 어렵지 않습니다. 자아 그러면 또 예제를 통해서 알아보도록 하겠습니다. 우선은 replot 이라는 명령은 GNUplot 이 마지막으로 그래프를 나타내기 위해서 출력한 명령어를 다시 사용한다고 이해하시면 쉽습니다. GNUplot은 뭐든지 마지막으로 출력한 결과물을 기억하고 있습니다. 이점 기억해 두세요. 우선은 사인파를 그려보도록 하겠습니다.
: 위와 같은 그래프가 생성이 됩니다. 다음은 Postscript File로 저장을 해 보도록 하겠습니다.
: 위와 같이 GNUplot의 터미널을 변경합니다. set terminal postscript 그런 다음에 저장할 파일명을 지정합니다. set output ‘e:\sin.ps’ 그리고서 위의 그림에는 나와 있지는 않지만 마지막으로 replot 명령어를 사용합니다. 뭐 ^^; plot sin(x) 하셔도 되구여. 위에서 set output ‘e:\sin.ps’ 라고 한 것은 우선 e:\ 라는 위치에 sin.ps 라는 파일을 열어둔 것입니다. 아직 데이터가 들어간 것은 아니지요. 마지막으로 한 명령어의 실행 내용이 들어가는 것이지요. 마지막으로 plot cos(x) 하면은 cos(x) 그래프의 내용이 들어가는 것입니다. 그리고 plot sin(x) 해도 그래프 창은 뜨지를 않습니다. 터미널이 postscript 터미널 형태이기 때문이지요. 그리고 중요한 것은 이 상태에서 다른 그래프 출력 명령을 하면 미리 열어둔 파일에 그 내용이 들어가게 됩니다. 반드시 다른 데이터를 넣기 원한다면 다른 파일을 꼭 열도록 하세요. 그래야 파일을 확인하면 그 용량이 0이 아니라 정상 크기가 나오게 됩니다. 파일이 계속 열려 있으면 파일의 크기가 0으로 표시가 되어 나옵니다. 이점 꼭 기억해 두시기를 바랍니다. 이 파일은 다른 파일을 열면서 닫히게 됩니다. 다시 그래프를 보기 위해서는 터미널을 다시 바꿔 주시면 됩니다. “set terminal windows” 하시면 됩니다.
: 위에서는 sin.ps 라는 파일에 sin(x) 라는 그래프를 넣었습니다. 그리고 열린 파일을 닫기 위해서 tt.ps 라는 파일을 열었습니다. 그리고서 파일의 용량을 확인해야 제대로 그 크기가 나옵니다. 위에서 보듯이 tt.ps 라는 파일은 어느 데이터를 넣어도 계속 0이라는 크기로 나옵니다. 열려져 있는 상태이기 때문이지요. *^^*
[ sin.ps 파일의 내용 ]
(3) GraphicFile로 출력하기 ( Outputing to a graphics file )
: 자아 그러면 이제는 그래픽 파일로 출력을 해 보도록 하겠습니다. 우선 여기서는 eps 라는 그래픽 파일로 출력을 해 보도록 하겠습니다. eps 파일은 그림파일의 일종이기도 합니다. 대표적으로 한글에서도 불러올 수가 있습니다. 방식의 설명은 생략하고 예제로 설명을 맺도록 하겠습니다.
: 한글에서 eps 파일을 불러 오는 것은 직접 해 보세요~ *^^* 위의 경우는 cos(x) 라는 그래프를 cos.eps 파일로 저장한 경우 입니다.
※ ps : PostScript, eps : Encapsulated PostScript ( 프린터로 직접 인쇄하는 ps 파일에서 필요로 하는 여분의 명령어 줄이 없음 )
12. 쓸 만한 요령 ( Nifty Tricks )
(1) file로 작업 저장 또는 시작하기 ( Saving and Loading work from files )
: GNUplot에서는 작업하던 도중에 내용을 저장할 수 있습니다. 예를 들어서 해 보도록 하지요.
: 위의 예제는 우선 isosamples를 이용하여 해상도를 60으로 조정하고, 3차원으로 sin 함수를 나타내었습니다. 마지막으로 표현한 그래프가 3차원 sin 그래프이므로 save 명령어를 통해서 저장되는 것이 바로 3차원 sin 함수입니다. 위 그림을 보면 3d-sin.gnu 라는 파일이 생성 되었음을 볼 수 있습니다. 자아 그러면 이 그래프를 다시 불러 오도록 하겠습니다.
: 파일을 불러오는 명령어는 load입니다. 간단하지요? 그러면 이 부분은 여기서 설명의 끝을~ 쫘악! *^^*
(2) Log scale 사용하기 ( Using a Log Scale )
: 변수값이 크게 바뀌는 경우 log 좌표를 사용하는 것이 필요할 때가 있습니다. log scale의 적용은 간단합니다. 2차원 그래프에서 x 축에 logscale을 적용하고 싶다면 명령어 라인에서 “set logscale x” 하시면 되고, y 축에 적용하고 싶다면 “set logscale y” 하시면 됩니다. ^^; 현재 logscale 이 적용되는 것을 보고 싶으시면 “show logscale” 이라는 명령어를 사용하시면 현재 어느곳에 logscale이 적용이 되고 있는지 알 수 있습니다. 또한 logscale을 적용하지 않으시겠다면 명령어 라인에서 “set nologscale (axis)” 하시면 됩니다. 좌표축을 넣지 않으면 기본적으로 모든 좌표축에 적용이 되어 모두 logscale을 사용하지 않게 됩니다. 예를 보고 끝내도록 하겠습니다.
: 위에서는 우선 x에 logscale을 적용한 다음 show logscale 명령어로 적용이 된 것을 보았습니다. 그리고 다시 logscale을 없앤 다음 다시 y에 logscale을 적용하고 확인한 다음 다시 logscale 설정을 없앴습니다. 마지막으로 logscale 적용의 예를 보고 끝내도록 하겠습니다.
[ logscale 적용전 ]
[ logscale 적용후 ]
(3) 그림표에 눈금 격자 나타내기 ( Displaying a grid behind graph )
: 간단히 말해 그래프에 눈금 격자를 보이게 하는 것입니다. 보이게 하기 위해서는 “set grid” 보이지 않게 하기 위해서는 “set nogrid” 하시면 됩니다. 예제 그림을 보면서 마치도록 하겠습니다.
[ grid를 이용한 그래프 표현 ]
(4) 여러 그림표 겹쳐 보이기 ( Overlaying Multiple Plots )
: 여러 그래프를 동시에 한화면에 나타내기 위해서는 간단합니다. 단순히 명령어에서 콤마로 분리를 시키면 됩니다. 이것도 예제로 마물하겠습니다. *^^*
(5) 선의 모양 바꾸기 ( Changing style of lines )
: GNUplot에서 그래프의 출력, 선의 종류를 선택할 수 있습니다. 선의 종류를 바꾸기 위해서는 “set function(data) style line-style”입니다. 우리가 바꿀 부분은 바로 line-style 부분입니다. sin(x)를 통해서 여러 라인의 형태를 보도록 하겠습니다.
[ Lines ] [ Points ] [ Linespoints ] [ Impulses ] [ dots ] [ Steps ] [ Errorbars ] [ Boxes ] [ Boxerrorbars ]
: 현재의 라인의 형태를 확인하기 위해서는 “show function(data) style” 하시면 됩니다. function은 우리가 함수의 형태를 주고서 그래프를 그리는 경우이고, data는 data 파일을 통해서 그리는 것을 말합니다. 또는 다음과 같이 형태를 바꿀 수도 있습니다. “plot function(data) with line-style” *^^* 그리고 3차원에서는 라인의 형태가 제한이 되어 있습니다. 3차원 그래프에서는 “Lines”, “Linespoints”, “Impulses”, “Dots” 4가지 형태의 라인 형태만을 사용할 수 있습니다.
(6) 수식 값 계산하기 ( Evaluating Expressions )
: 수식값을 계산 할 때는 “print” 명령어를 사용합니다. 일반적인 산술 연산 및 지수 함수의 계산 등을 할 수 있습니다. 사용법은 아주 간단합니다. 그냥 몇가지 예를 화면에 띄어 보도록 하겠습니다.
(7) 함수 정의하기 ( Defining your own functions )
: 함수를 정의하는 방법은 다음과 같습니다. “constant_name = expression(value)” 예를 들자면, c = 3 하고 plot sin(x*c) 하면은 결론적으로 plot sin(3*x)를 출력하는 결과가 됩니다. 위의 것들은 변수를 정의하는 경우이고 다음에는 함수를 정의해 보도록 하겠습니다. 예를 들어서 보는 것이 좋겠지요?
: 위와 같은 변수 및 함수의 정의는 그래프를 출력하거나 수식의 계산에도 사용될 수 있습니다.
(8) 변수 바꾸기 ( Changing variables used )
: 일반적으로 2차원 그래프에서는 독립 변수가 x가 쓰인다. 3차원인 경우 x, y가 쓰인다. 이런 독립 변수들을 바꿀 수가 있다. 변수를 바꾸는 방법은 “set dummy” 라는 명령어를 사용한다. 지금까지 차근차근 따라오신 분들은 이 dummy 라는 단어를 몇 번 마주 쳤을 것이다. “set dummy t”라 하면 x라는 독립 변수 대신 t라는 독립 변수를 사용하게 된다. “set dummy k, s” 하면은 x, y라는 독립 변수 대신에 k, s라는 독립 변수를 사용하게 된다. 더 자세한 사항은 “help set dummy”를 보면 됩니다. ^^;
(9) 축 이름 바꾸기 ( Changing axis labels )
: 기본적으로 보게 되면 2차원인 경우 축이 2개가 쓰입니다. x, y축이지요. 3차원은 당연히 x, y, z 이지요? ^^;;; 여기서는 이 축들에 그래프 출력시 이름을 붙히는 방법을 알아보도록 하겠습니다. 명령어는 다음과 같습니다. “set x(y,z)label string” 하시면 됩니다. 우리는 string 이라는 부분을 바꾸면 되는 거구여. *^^* 예를 끝으로 이부분도 마물을 ^^v
(10) 그림표의 외관 바꾸기 ( Changing general apperance of plot )
ㆍ 제목과 시간 더하기 (Adding Title and Time) : 이 부분은 출력되는 그래프 양식에 출력되는 시간과 제목을 만들어서 넣는 작업입니다. 이것도 예제로 ^^;
ㆍ 외곽선 및 함수 이름 없애기 (Turning off Border and Graph Key) : 이 기능은 함수의 그래프에서 사각형 테두리를 없앰과 함수 출력시 우측 상단에 나타나는 함수의 이름을 없애는 것을 나타냅니다. 외곽선의 유무는 “set (no)border” 라는 명령어로 합니다. 함수의 이름의 유무는 “set (no)key” 라는 명령어로 합니다. 이것도 역시 예제를 보는 것이 가장 좋겠지요? ^^v
ㆍ 경계의 tic 표시 바꾸기 : 이번에는 경계에 나타나는 표시들을 없애고 바꿔 봅니다. 이것 또한 예제로 대치 합니다. *^^* 예제를 보시면 쉽게 이해하실 수 있습니다.
[ set noxtics ]
[ set noytics ]
: 다시 되살리려면 “set xtics” 과 “set ytics”을 사용하시면 됩니다. 이 표시 부분을 월별로나 일자별로 할 수도 있습니다.
※ 기타 참고로 보실 사항들
① help plot datafile using
② help plot datafile
③ help set ticslevel
④ help arrows
⑤ help labels