xmgrace (grace) by 바죠


http://plasma-gate.weizmann.ac.il/Grace/doc/UsersGuide.html

http://plasma-gate.weizmann.ac.il/Grace/
http://plasma-gate.weizmann.ac.il/Grace/gallery/
http://lptms.u-psud.fr/wiki/index.php/Tips_for_Xmgrace



xmgrace (grace)는 그래프 그림을 준비할 때 내가 아주 오랬동안 사용해온 프로그램이다. 사실, xmgr (grace의 오래된 버전)을 오랬동안 사용해왔다. XY 형식의 2D 그래프를 그릴 때 많이 사용해왔었다. 아직 10년은 되질 않았지만, 아주 오랜기간 사용해온 프로그램이다.

많은 프로그램들이 아웃풋을 준비할 때, xmgr로 바로 그려볼수 있도록 데이터를 출력하고 있는 것이 현실이다. 개인적으로, 여러편의 논문 발표에까지 이미 사용되었다. 지금 생각하면 xmgrace 개발자들에게 특별히 감사해야 할 것 같다. 나말고도 많은 사람들이 xmgrace를 사용하고 있는것으로 알고 있다. 역시 좋은 평가가 대부분이다. 가장 높이 평가 받고 있는 부분은 역시 무료 프로그램으로서 입지이다.

무료 프로그램치고는 너무 퀄러티가 좋다고 볼 수 있다. 그누플롯(GNU plot)도 많이 사용되고 있다는것을 알 수 있다. 그누플롯을 이용한 그림이 종종 논문에 나타나는것을 볼수 있다. 개인적 생각이지만, 다소 퀄러티가 떨어진다고 본다. 물론, 상황에 다라서 다르기는 하다. 연구의 현장에서는 gnuplot이 보다 더 유용할 수도 있다. 그 이유는 스크립트로 일처리가 가능하기 때문이다. 소위 명령어들을 스크립트로 처로할 수 있기 때문이다.  반복,선택 작업을 프로그램을 처리 할 수 있기 때문이다.

초절정 최고 퀄러티를 추구함에는 다소 부족할 수 있다. 하지만, 대개의 논문 준비에는 별 문제가 없을듯 하다. 실제로 많이 활용되고 있다.

더욱더 복잡한 그림은 사실상 xfig를 활용한 그림으로 대체될 수 있을것이다. 즉, 여러 가지 그림들을 이용해서 하나의 그림을 만드는 작업은 xmgrace 내에서 모두 다 소화할 필요가 없다는 뜻이다. xfig라는 프로그램을 활용함에 있어서 한 가지 주의할 점은 다음과 같다. 화면에 보이는 퀄러티가 출력물의 퀄러티가 아니라는 사실이다. 처음에 너무 흐리게 나와서 계속 작업을 하지 않는 사람들이 있다. 하지만, EPS형식으로 출력물을 만들어 보면 대단한 퀄러티를 자랑한다. 다양한 형식으로 만들어진 그림들을 활용하여 하나의 그림을 완성할 수 있다. 그중에서 XY 플롯으로 된 그림은 xmgrace가 확실히 담당할 수 있으리라 생각한다.

그래프 그리는 프로그램 선택에 주저하시는 분이 계시다면, 추천합니다. xmgrace를 사용하십시요. 물론, 무료 프로그램이다. xfig 프로그램과 더불어 사용하면 (종합적인 그림 조합을 시도하는것 까지 합치면) 논문 작성 수준에서도 좋은 프로그램으로 평가될 수 있을것 같습니다. 이 경우, 3D plotting이 마지막 문제로 남게 됩니다. 이것은 gnuplot, matplotlib(python), matlab, mathematica, octave같은 것을 사용해야 할것 같습니다.

익숙해지면, 굉장히 파워풀하고 유용한 프로그램이다. 특히, 잘 만들어진 그래프는 "publication-quality"를 보장한다. 각종 피팅 작업들도 지원한다. xmgr을 사용하다가 xmgrace를 사용하는데, 크게는 무리가 없다. 보다 쉬어진 느낌이 든다. 하지만, 약간 당황스러운 점이 있다. 두 개의 프레임을 활용하여 그래프 두 개 이상 그릴 때, 제법 당황했다.

요즈음은 재빠른 데이터 모음을 위해서 화면을 캡쳐하고 그림을 저장하여 본다. 하이퀄러티 그림은 나중에 그리더라도 간편한 분석용 그림은 화면캡쳐하는 형식으로 데이터를 정리하고 있다.  (키보드 상의 Prt Sc를 활용하여 버퍼에 그림을 저장하고, "그림판"에서 붙여넣기를 시도하면 된다.) control-Prt Sc키를 이용하면 활성화된 창의 그림만 버퍼로 저장한다.

정확하게는 아래의 형식에 대한 그래프 지원을 한다.

XY Graph
XY Chart
Polar Graph
Fixed Graph
Pie chart


아웃풋 형식으로 아래의 것들을 지원한다. 물론, eps형식을 가장 많이 사용해왔었다.
X11
PostScript (level 1 and level 2)
EPS (encapsulated PostScript)
Metafile (which is Grace format, used at the moment mostly for debugging purposes)
MIF (Maker Interchange Format used by FrameMaker)
SVG (Scalable Vector Graphics, a language for describing two-dimensional vector and mixed vector/raster graphics in XML)
PDF (depends on extra libraries, see configuration)
PNM (portable anymap file format)
JPEG (depends on extra libraries, see configuration)
PNG (depends on extra libraries, see configuration)


간단한 xmgrace 사용 예 (초보자 용):
afile.dat, bfile.dat이 각각 아래 형식의 데이터 파일일 때,
1. 12.
2. 13.
3. 14.
4. 15.
새로운 창에서, graphic user interface에서, 적절한 버튼들을 눌러 보면서를 다양한 기능을 배울 수 있다.

프롬프트에서 아래와 같이 실행하면 그림이 나온다.
$ xmgrace afile.dat bfile.dat &
물론, afile.dat만을 그릴 때에는,
$xmgrace afile.dat &
이렇게 하면, 소위, 자동스케일링(autoscaling)이 수행되어 프로그램이 그래프를 대략 그려준다. tick, X, Y, 축 설명이나, 심볼 크기, 색깔 등은 사용자의 의도에 따라서 튜닝이 가능하다.

cfile.dat에서 & 를 이용하여 두 가지 데이터 그리기를 시도할 수 있다.
1. 12.
2. 13.
3. 14.
4. 15.
&
1. 19.
2. 18.
3. 17.
4. 16.

$ xmgrace cfile.dat &

dfile.dat에서 #을 이용하여 데이터 설명을 삽입할 수 있다. 데이터의 의미를 표시할 때 유용하다. xmgrace가 이를 무시하고 데이터를 그린다.
# abc data
1. 121.
2. 131.
3. 114.
4. 151.
&
# def data
1. 191.
2. 181.
3. 171.
4. 161.


물론, 필요하다면 더 많은 데이터들(set 들)을 한 파일에 보관하기 위해서 &를 계속해서 사용할 수 있다. 이 때, #을 이용해서 각 데이터들을 사용자가 구별할 수 있으면 더 좋겠다.

Edit--> Explorer로 들어가면, Frame, Graph 등의 트리가 나온다.
사실, xmgrace adata.dat형식으로 xmgrace 를 실행했기 때문에 이미, graph가 그려져 있다. 다시 말해서, X, Y, set등의 정보가 이미 들어와 있다.

$xmgrace &
형식으로 프로그램을 실행시킨 다음 Edit--> Explorer로 들어와서, X, Y, set등을 만들수도 있다. 일반적으로 그렇게한다.

여기서 "set"은 위의 예제에서 이야기한 data set을 이야기 한다. 당연히, 여러개 있을 수 있다.
X Axis
Y Axis

Insert 아이콘을 이용하여 Axis, set을 만들 수 있다. 다음 단계에서 Axis는 X, Y둘 중 하나를 선택하여야 한다. 외부에 있는 set은 다음 단계에서 불러들여 올 수 있다.
오른쪽 마우스 버튼을 클릭하여 다양한 실행들을 할 수도 있다. 예를 들어, 지우기, 감추기.

X Axis
Y Axis
Set
등을 클릭해서 이들과 관련된 구체적인 정보를 참조할 수 있고, 변화시킬 수 있다. 원하는대로 그래프를 더 잘 만들어 볼 수 있다.
예를 들면, X축 설명 (글자 크기, 형식), set에서의 심볼 모양, 크기, 색 설정등을 할 수 있다.
tick 간격 설정등도 할 수 있다. major, minor tick들을 손쉽게 바꿀수 있게 되어 있다. 각 축의 변수 값들을 표시할 수 있다. 글자 크기를 디폴트 보다 좀 더 크게 만드는것이 좋아 보인다.

Set의 설정에서는 Legend를 이용하여 현재 그리고 있는 데이터에 대한 공식적인 설명을 첨부할 수 있다.

File-->Print setup에서 각종 선택사항을 확인하고 설정한다.
그 다음 File-->Print를 통해서 실질적인 출력물을 생산한다.

지금까지, 작업한 그래프 형식(원하는 대로 설정해둔 형식들을 보관하고 싶다.)을 저장하려면,
File--> Save에서 .xgr형식으로 저장한다. 예를 들면, abcd.xgr


그래프 두개 그리기 (아래 위로 배열된 두 개, 1 column, 2 rows ):

xmgrace &
Edit--> Arrange frames에서
(+) Frame...클릭
Row 2로 만든다. Apply버튼 클릭

Edit--> Explorer로 들어가서,
두 번째에 있는
Frame을 클릭하고,
Insert 버튼 클릭, 다시, Graph를 클릭하면
Graph가 하나더 생긴다. 트리구조의 변화가 보인다.
이 때, 윈도우에서 마우스를 이용해서 위의 그래프와 아래의 그래프가 "active" 해진 것을 확인할 수 있다. 클릭해보면, active 상태를 확인할 수 있다.

Graph는 Axis 두 개를 생성한다. X, Y(기본에서 변형시켜야 함.)을 설정해야 한다. 

두 번째 그래프(새로 추가된 그래프)의 X, Y Axises를 위해서, Graph를 클릭하고
Inset를 사용하여 X 축과 Y 축을 만든다. Axsis, 두 개를 만든다. 그 다음 하나를 X 축에서 Y 축으로 바꿔준다.

윗쪽 그래프에 그림 그릴 때, 윈도우 화면에서, 마우스로 Graph 클릭,
Data-->Import--> ASCII
파일 선택하고 다시 한번, Graph를 선택해서 클릭한다. (지금의 경우 둘 중 하나를 클릭, 윈도우에서 마우스 클릭으로 선택)
각각의 그래프에서 사용자의 의도에 따른 fine tuning이 가능하다.



출력: File->print setup-> print

print setup과정에서 출력형식을 설정한다. 실제적인 프린트작업은 print키를 눌러야 진행된다. 통상, eps, png두 가지 버전을 가지고자 한다. 그래서 위의 과정을 두 번 밟아야 한다.

출력은 주로 eps형식을 잘 사용한다. eps이외에는 jpg를 사용했으나,  요즈음에는 그림이 선명하지 못하다고 판단하여 png를 사용한다. eps형식 하나, png형식 하나. 앞으로도 발표 quality를 위해서 png를 사용해야 할 듯 하다.


통상의 룰: 사진--jpg
        글자가 들어간 그림, 도식--gif (글자가 번지지 않게 하기 위해서는 gif)
        글자가 들어갈 경우 jpg같은 경우 번져 버리기 일쑤.


----------------------------------------------------------------------------------------------------------
ps

.ps 파일은 직선의 양 끝점의 좌표를 저장하고, 그 사이에 선을 그으라는 명령을 저장합니다. postscript는 하나의 언어입니다. postscript 로 저장하면 아무리 확대해도 그림의 해상도는 변하지 않는다. 수정이 용이하여 그래프나 문서를 저장하기 좋습니다. 그래프를 그리고 논문을 쓸 때는 많은 사람들이 포스트스크립트 방식을 사용합니다.

통상, 논문, 보고서 등에 들어갈 그림은 통합적인 그림을 그리는 것이 유리하고 보기도 좋다. 예를 들어, 에너지 변화, 분자 모양 변화 등을 하나의 그래프에 그리기는 현실적으로 매우 어렵다. 포괄적이 그림은 그 만큼 많은 것들을 한꺼번에 보여 준다는 뜻이다. 따라서, 각각 에너지 그래프, 분자 모양 변화 그림을 그린 다음, xfig (리눅스 사용자) 와 같은 편집 도구를 사용해서, 각각의 그림을 새로운 판에 재 배치하고 글자, 도형 등 새로운 하나의 그림을 만드는 방식이 유리한다. 칼러와 화려한 그림들이 난무하는 시대에, 포괄적 그림을 잘 그린다는 것은 매우 중요한 발표 덕목으로 자리 잡고 있다. 돌이켜 생각해 보면, 이전에 발표한 그림들의 수준이 낮았었다것에 동의하며, 앞으로는 좀 더 멋있는 그림으로 승부해야겠다는 생각이 든다.



ps.
그림에서 특정 선과 완전히 평행한 또 다른 선 하나 긋기.
xfig에서 작업을 하면 정밀하게 얼라인 할 수 없다.

그림판에서 bitmap 양식에서 색깔 뽑아내기/연필로 정밀하게 그릴수 있다.
png양식-->그림판--> png양식  ==> xfig에서 eps로 저장해 버릴 수 있다.


-----------------------------------------------------------------------------
ps. multiple column 데이터 그리기.

1  1   -1
2  2   -2
3  3   -3
4  4   -4
5  5   -5
또는
1.  1.   -1.    -1.5
2.  2.   -2.1   -2.56
3.  4.   -3.    -4.02
와 같은 형식의 데이터는
xmgrace&
DATA-->NXY 양식을 선택함으로써     두 번째 세 번째, 혹은 네 번째 칼럼들을 그릴수 있다. 이 때, x 축 데이터는 첫 번째 컬럼이 된다.

호기심으로 아래와 같이 데이터를 정리했을 경우에도 마찬가지로 그림이 완성이 되는군요.
1  1   -1
2  2   -2
3  3   -3
4  4   -4
5  5   -5
&
1  1.43   -1.3
2  2.43   -2.3
3  3.43   -3.3
4  4.43   -4.3
5  5.43   -5.3



X Y DY
형식으로 y 값에 대한 error bar 표시하기.

xmgrace 실행
data --> import --> ASCII -->  Load as Block data (변환 버튼 클릭), 파일명 지정, OK ---> 새로운 창에서 set type을 XYDY로 변환, X from column 1
        Y from column 2
        Y1 from column 3
처럼 변환 클릭하고, Accept 버튼 클릭


자료는 아래와 같은 형식으로 준비합니다. 
x1 y1  z1
x1 y2  z2
...
...

#       x 값      y 값                     +- z     여기서 z 값만 아래와 같이 3번째 칼럼에 배치합니다.
         1      0.8872733458E+00    0.3792911138E-01
         2      0.1705669829E+01    0.3782938058E-01
         3      0.3157437972E+01    0.3817523174E-01
         4      0.4935925699E+01    0.4486957839E-01
         5      0.6601725027E+01    0.5572182799E-01
         6      0.6747743121E+01    0.6321832164E-01
         7      0.6907467952E+01    0.7175458471E-01
         8      0.7194332826E+01    0.7973160605E-01
         9      0.6984198333E+01    0.6813534266E-01
        10      0.6443963703E+01    0.5253497111E-01
        11      0.6071289148E+01    0.4417797460E-01
        12      0.5726388187E+01    0.3825964442E-01
        13      0.5293296478E+01    0.3152416750E-01
        14      0.5280007636E+01    0.2997981733E-01
        15      0.4771992084E+01    0.2922625772E-01
        16      0.4277164392E+01    0.3247102030E-01
        17      0.3607666940E+01    0.2935327435E-01
        18      0.2319777615E+01    0.2743579529E-01
        19      0.1307552627E+01    0.2740044719E-01
        20      0.6213800574E+00    0.2729675475E-01



참고:
http://incredible.egloos.com/4162940
http://incredible.egloos.com/4486070

ps.

하나의 x 축 값들에 대해서 y1함수값들을 그린다.
그다음 위에서 사용한 x 축 값들에 대해서 y1 함수값들을 추가로 포개어서 그리고 싶을 때가 있다.

이것은 Edit -> Arrange  graphs에서 "2 rows 1 column"으로 설정하여 2단으로 그림들을 배열함으로써 일들을 시작할 수 있다.
일단 위와 같이 각각의 그림들을 완성한다.
즉, x vs y1함수를 그리고( 좌측에 y1을 위한 tick marks와 tick label이 존재한다. 예를 들어 검은색) (normal side로 설정한다. both sides로하지 않는다.)
x vs y2 함수를 각각의 그래프에다 그린다. 이 때 y2를 위한 tick marks, tick labels을 오른쪽에 위치하게 하고 y2와 같은 색으로 다르게 지정한다. 예를 들어 붉은색으로 지정한다. 

그다음 y2에 해당하는 그림에서 tick marks, tick labels을 모두 opposite side(both sides로 설정하지 않는다.)에 배치한다.
물론 색도 모두 다 다르게 설정할 수 있다.

이렇게 모두의 그림을 완성한 다음.
Edit -> Overlay graphs 를 이용하여 하나의 graph을 다른 graph위에다 올려놓은 작업을 수행해버린다.

이렇게 하면 왼쪽은 y1을 위한 tick marks tick labels가 존재하고 오른쪽에는 y2을 위한 tick marks, tick labels가 존재하게 된다.
Untitled.eps

 cat aa
1.  11.4
2.  12.7
3.  13.1
4.  14.56
[ihlee@helix work6]$ cat bb
1.   0.9
2.   2.2
3.   3.54
4.   4.0



PS.
distance (\cE\C)
위의 것은 거리 단위인 옹스트롬을 xmgrace에서 표현한 예이다.

이탤릭 폰트
\1
\0

심볼 문자
\x

\1p\0-type
\1n\0-type

@map color 1 to (0, 0, 0), "black"
@map color 2 to (255, 0, 0), "red"
@map color 3 to (0, 255, 0), "green"
@map color 4 to (0, 0, 255), "blue"
@map color 5 to (255, 215, 0), "gold"
@map color 6 to (250, 128, 114), "salmon"
@map color 7 to (188, 143, 143), "brown"
@map color 8 to (220, 220, 220), "grey"
@map color 9 to (148, 0, 211), "violet"
@map color 10 to (0, 255, 255), "cyan"
@map color 11 to (255, 0, 255), "magenta"
@map color 12 to (255, 165, 0), "orange"
@map color 13 to (114, 33, 188), "indigo"
@map color 14 to (103, 7, 72), "maroon"
@map color 15 to (64, 224, 208), "turquoise"
@map color 16 to (0, 139, 0), "green4"
@map color 17 to (255, 99, 71), "tomato"
@map color 18 to (255, 127, 80), "coral"
@map color 19 to (250, 128, 114), "salmon"
@map color 20 to (0, 255, 0), "lime"
@map color 21 to (128, 128, 128), "gray"
@map color 22 to (210, 180, 140), "tan"
@map color 23 to (255, 192, 203), "pink"
@map color 24 to (128, 0, 128), "purple"
@map color 25 to (220, 20, 60), "crimson"
@map color 26 to (205, 104, 137), "palevioletred3"
@map color 27 to (255, 62, 150), "violetred1"
@map color 28 to (255, 131, 250), "orchid1"
@map color 29 to (240, 230, 140), "khaki"
@map color 30 to (255, 69, 0), "orangered"
@map color 31 to (152, 251, 152), "palegreen"
@map color 32 to (0, 255, 127), "springgreen"
@map color 33 to (70, 130, 180), "steelblue"




핑백

덧글

댓글 입력 영역

최근 포토로그