GNUPLOT 사용법, 함수 그래프 그리기, 두 함수 사이의 영역 색칠하기  

  gnuplot은 수학 함수나 실험 데이터의 그래프를 그리기 위한 프로그램입니다. 상용 소프트웨어인 MS-EXCEL, Origin 등과 유사한 기능을 제공하면서도, 무료 공개 소프트웨어이며 리눅스, 맥, 윈도우 등 대부분의 플랫폼을 지원합니다. 가장 큰 차이는 MS-EXCEL과 Origin이 그래픽 유저 인터페이스를 기반으로 스프레드시트 (데이터 테이블) 상의 내용을 그래프로 표현하는 방식을 가지는 반면에, gnuplot은 텍스트 명령행 기반의 인터페이스를 가진다는 점 입니다. 대화형 인터페이스를 통해서, 한 줄 씩 명령어를 입력하여 그래프를 그리거나 옵션을 설정할 수 있고, 이러한 명령들을 스크립트 파일로 작성하고 이를 읽어들여 한 번에 실행시킬 수도 있습니다 . 물론, 스크립트 작성을 통한 배치 작업 (batch process, 일괄 처리)도 가능합니다.

gnuplot 설치 방법과 간단한 사용법은 인터넷에서 쉽게 찾을 수 있으므로, 여기에서는 좀 더 유용한 사용법들을 소개하고자 합니다.

함수의 그래프(2차원)를 그리는 방법은 간단합니다.

plot 명령을 사용합니다.

 

gnuplot> plot sin(x)​

 

​여기서 'gnuplot>'은 gnuplot의 프롬프트를 나타낸다.

 

 

 

두 개 이상의 함수들을 동시에 그릴 수도 있습니다.

plot 명령 뒤에 함수의 이름을 콤마(,)로 구분하여 나열하기만 하면 됩니다. 

gnuplot> plot sin(x), cos(x)

 

 

아래와 같이 사용자 함수의 정의도 가능합니다.

gnuplot> f(x) = x + 1

gnuplot> g(x) = x**2 - 1

gnuplot> plot f(x), g(x)

 

 

함수의 범위도 지정할 수 있습니다.

 

gnuplot> plot [-3:3] [] f(x), g(x)

 

각 구간을 [] 기호로 둘러싸 정의할 수 있으며, 위 예제에서는 x 구간만 지정하고 y 구간은 자동 설정으로 대신하였다.

 

 

y=g(x), 포물선의 위쪽 영역을 색칠하였다.

 

gnuplot> plot [-3:3] [] g(x) with filledcurves

 

y=g(x), 포물선과 화면 아래 쪽 x축(x1으로 표기) 사이의 영역을 색칠합니다.

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

gnuplot> plot [-3:3] [] g(x) with filledcurves x1

 

 

x축에 평행하고 y절편이 1인 직선('y1=1'로 표현)과 포물선, y=g(x) 사이의 영역을 색칠합니다.

 

gnuplot> plot [-2:2] [] g(x) with filledcurves y1=1

 

 

이번에는 두 함수 f(x)와 g(x) 사이의 영역을 칠하고, legend 표기 방식도 보기 좋게 수정해 보겠습니다. 직접 지원하는 명령을 찾지 못해서 약간의 편법을 사용해야 했습니다. 먼저 포물선 함수 g(x)의 위쪽 영역을 (기본 설정 색으로) 칠하고, ​직선 f(x)의 위쪽을 흰색(바탕색)으로 덧칠하여 두 함수 사이의 영역을 표현했습니다. 마지막으로 두 함수의 곡선을 다시 그립니다. 고등학교 수학 교과서에 자주 등장하는 그림이죠.(^-^;)

 

gnuplot> plot [-3:3] []  g(x) with filledcurves notitle, f(x) with filledcurves x2 fillcolor rgb 'white' notitle, f(x), g(x)

 

 

 

물론, 곡선을 채우는 패턴도 변경할 수 있습니다.

 

gnuplot> plot [-3:3] []  g(x) with filledcurves fill pattern 1 notitle, f(x) with filledcurves x2 fc rgb 'white' notitle, f(x), g(x)

 

 

비슷한 작업을 위해서 텍스트 편집기(vi, gedit, nano, ...)를 이용해서 아래와 같은 스크립트를 작성하고 활용할 수 있습니다.

 

# 주석 표시, gnuplot script

# 이전에 변경된 설정들을 모두 기본 (default) 상태로 초기화 한다.
reset

# 터미널 형식을 포스트스크립트로 변경합니다.
set terminal postscript

# 결과를 파일로 저장합니다.
set output 'FillBetweenTwoCurves.eps'

f(x)=x+1
g(x)=x**2-1

# x축과 y축의 스케일을 같게 합니다.
set size ratio -1

# legend 위치를 오른쪽 아래로 지정합니다.
set key right bottom

plot [-3:3]  [ ]  g(x) with filledcurves fillstyle pattern 1 notitle, \
                        f(x) with filledcurves x2 fillcolor rgb 'white' notitle, \
                        f(x) with lines linetype 1 linecolor 1 linewidth 3, \
                        g(x) with lines lt 2 lc 2 lw 3;

 

예제에서는 점선을 나타내기 위해서 포스트스크립트 터미널 형식을 사용했습니다. jpeg 또는 png 형식의 터미널에서는 solid 형태의 선 밖에 사용할 수 없습니다. 스크립트 파일의 이름을 'FillBetweenTwoCurves.gp'라고 한다면, gnuplot 프롬프트 상태에서 아래와 같이 'load' 명령으로 이를 실행시킬 수 있습니다.

gnuplot> load 'FillBetweenTwoCurves.gp'

 

또는 터미널에서 직접 실행시킬 수도 있습니다.

gnuplot FillBetweenTwoCurves.gp

 

  리눅스 환경에서는 ps 또는 eps 형식의 그림 파일을 기본으로 표시하지만, 윈도우 환경에서는 이를 보기 위해서 GSView와 같은 별도의 프로그램을 설치해야 합니다.

  명령어들에 대한 자세한 설명은 gnuplot 공식 홈페이지(http://www.gnuplot.info)의 매뉴얼, 튜토리얼, 이미지 갤러리를 참고하세요. 참고문헌으로는 'Gnuplot In Action'이나 'Gnuplot Cookbook'이 볼만합니다.

 

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
24 [scientific computing] SageMath에서 사용하는 숫자 file 졸리운_곰 2021.08.14 42
23 [sagemath] sagemath 설치와 세팅, scientific computig file 졸리운_곰 2021.08.14 60
22 [도스 (MS-DOS) 시절 엔지니어링 프로그램과 호환을 위한] OpenBGI library file 졸리운_곰 2020.10.18 78
21 Octave — Scientific Programming Language Crash Course file 졸리운_곰 2020.09.19 86
20 gnuplot 기초 사용법 졸리운_곰 2020.07.09 203
19 gnuplot 사용법 file 졸리운_곰 2020.07.09 92
» GNUPLOT 사용법, 함수 그래프 그리기, 두 함수 사이의 영역 색칠하기 file 졸리운_곰 2020.07.09 650
17 Windows 환경의 C++ 언어에서 gnuplot을 사용한 그래프 출력 2  file 졸리운_곰 2020.07.07 404
16 Windows 환경의 C++언어에서 gnuplot을 사용한 그래프 출력 file 졸리운_곰 2020.07.07 347
15 가장 간단한 수치해석, essential example programs for physics [python] file 졸리운_곰 2020.06.17 86
14 2018 수치해석 실습자료 file 졸리운_곰 2020.06.17 146
13 [Fortran] Numerical Recipes in Fortran 졸리운_곰 2020.03.26 36
12 희소행렬 file 졸리운_곰 2020.02.12 87
11 The method to use Scilab function in C++ code file 졸리운_곰 2016.08.10 98
10 Visual Basic for Electronics Engineering Applications (2nd ed.) file 졸리운_곰 2016.04.25 84
9 log함수의 도시 semilogx file 가을의 곰을... 2013.02.04 733
8 log함수의 도시 semilogy file 가을의 곰을... 2013.02.04 1255
7 로그함수의 도시 loglog file 가을의 곰을... 2013.02.04 809
6 극좌표계의 Plot file 가을의 곰을... 2013.02.03 870
5 표시 부호 (mark) 만으로 도시 file 가을의 곰을... 2013.02.03 616
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED