GNU_PLOT_사용법.ARABOZA

matplotlib 말고도 공짜로 그래프를 그려주는 프로그램이 있어?! 게다가 파이썬을 몰라도 쓸 수 있어?!소문 확인하러 스태프가 찾아갔어… (행인1) : 아, 말도 하지마! 요즘 우리 동네에서는 그걸 모르면 간첩이야~ (행인2) : 아니 모르는 사람도 있나?

(스태프) : 아니 아주머니, 그게 뭐예요?!

제작진이 찾아다닌 끝에 알게 된 바로 그것은 gnuplot! 게다가 터미널에서 나오지 않고 그림을 그릴 수 있다는데…?!

==========================================================================================GNUplot how to use..gnuplot은 스크립트로도 실행이 가능하지만 우선 가장 간단하게 채팅창에서 실행해보자. 쉽게 보면 이라고 치면 그래프가 보인다. 뭔가 좀 어설프지만 공짜로 이 정도 퀄리티면 나쁘지 않다.

물론 바로 화면으로 확인하기 위해서는 엑스맨더와 같은 부가적인 프로그램이 필요하지만 최근 코로나19 때문에 엑스셀, 엑스플, 엑스맨더 모두 무료로 풀고 있으니 굳이 말할 필요는 없다.

옛날에는 굳이 외면하면서 “내가 쓰려면 moba Xterm이 더 나을 것 같아~ 이럴 수가~”라고 했지만 확실히 Xshell이 제일 좋은 것 같아.

물론 sin(x) 같은 것을 그리기 위해 gnuplot를 사용하는 것은 아니다. 우선 데이터 파일을 전달했을 때 그래프로 그리는 방법만 익혀두자.여기에 data.dat라는 데이터 파일이 있다.위와 같이 일행에 3개의 데이터가 있는 경우도 잘 알아들을 수 있다.셋이 되면 넷, 다섯 개… 알아듣기는 말할 것도 없이 잔소리, 세면 쥐가 듣는다.

터미널에 시키는 대로 쓰기만 하면 데이터 파일을 이용하여 그래프를 그릴 수 있다.한 그래프에 두 개를 동시에 그리고 싶다면 두 번째 명령어처럼 쉼표로 구분하여 쓰면 된다.

(using 1:2나 using 1:3을 사용하지 않으면 어떻게 되느냐고 묻는다면..처음에 두 가지만 읽고 그래프를 그려준다.)

아니, 선생님. 가위랑 십자가로 그려놓으면 이거 알겠냐면…with line / with linepoints 등의 옵션을 뒤에 붙이면 선으로 연결된다.

그래도 뭔가 좀 부족해 보인다.축 범위도 지정하고 싶고 축 간격도 그래프 색깔도 정하고 싶고 제목도 그래프 항목명도 정하고 싶다.우선 축범위를 정하는 방법부터 살펴보자.

다음으로 축 나누기 간격을 정하는 방법을 알아보자. xtics/ytics라는 함수로 축 나누기 간격을 정할 수 있는데 시작값/간격/마지막 값을 넣어야 한다.1, 0.5, 10:1부터 10까지 0.5분 간격으로 축을 나누세요. 뭐 이런 느낌이다.등간격이 아닌 축나눔도 가능한데(1,1.5,2.0.3.0,4.5,5.5,7.0,8.5,10) 이렇게 소괄호에 축나눔값을 일일이 지정하는 방법이다.

축 나누기 간격을 숫자로만 쓸 수 있는 것은 아니다. 각 값마다 숫자가 아닌 이름(예를 들어 학생별로 점수)을 매기고 싶다면..

만약 축 나누기 간격을 표시하고 싶지 않다면, “plot”하기 전에 한 줄 추가로 쓰면 된다.하지만 정말 필요한 경우가 아니라면 굳이 축 간격을 끄지 말자.ㅠ

다음으로, 「그래프명/축명/데이터명/데이터명 표시위치」를 정하자.각각 title, xlabel/ylabel, plot 내부의 title, key로 정할 수 있는데 코드로 확인해보면 별다른 내용이 없다.setkey의 경우 오른쪽 상단 모서리 부분의 위치가 입력한 숫자로 결정된다.

이제 세부적인 부분을 알아보자. y=0을 그래프에 표시하는(잃어버리는) 법 그래프틀 상자를 없애는(표시하는) 법 바둑판식 격자를 표시하는(없게) 법x/y축을 로그스케일로 바꾸는 법 등등을 통째로 알아보자. 이들 옵션은 setzeroaxis/setborder/setgrid/setlogscalex(y) 등으로 붙이거나 지울 수 있지만 붙일 경우 set/끄는 경우 unset라고 생각하면 된다.로그 스케일의 경우는 굳이 그래프로 그리는 데 사용하지 않았다.

별일이 없으므로 여기에서는 추가로 xrange/yrange를 쉼표 대신 “to”로 대체할 수 있다는 것과 using->u/with->w로 대체할 수 있음을 일단 표시해 둔다.

다음은 그래프에 그려지는 선의 모양/두께/색을 바꾸는 명령어를 살펴보자.각각 dashtype/line width/linecolor라는 키워드로 변경할 수 있다.아래의 경우에는 입력한 명령에 따라 선의 형태는 2번형/두께는 4/색은 3번색에 해당하는 그래프가 그려졌다.

그런데 이 정도가 되면 뭔가 plot 후에 너무 끈적거리지 않을까 하는 생각이 든다.하나의그래프에그리는그래프는특별한경우가아니면거의색을빼고는같은형식을같은데어디에띄어쓸수는없을까요?그런 경우에는 style이라는 것을 정의해 놓고 사용하면 plot 명령어 길이를 나름대로 줄일 수 있다.위와 같은 그래프를 그릴 경우 style을 사용하면 다음과 같이 짧아진다.

plot에서 line style 1번을 선택하면 1번 모양/두께 4/3번 색깔 그래프를 직접 그려준다.2번 스타일, 3번 스타일 등으로 정의를 해놓고 필요할 때 번호로 부르면 편할 것 같다.

대충 쓰다 보면 아래 코드가 대충 정리본이다.

error: Content is protected !!