xmgrace로 그림 그리기(두 개의 그래프들을 겹쳐 그리기) by 바죠


xmgrace로 그림 그리기(두 개의 그래프들을 겹쳐 그리기)

아래와 같은 두 개의 데이터 셋이 있을 때 xmgrace에서 2단으로 그릴 수 있다.
이것은 Edit--> Arrange graphs에서 입력(2 rows 1 column) 을 넣어 줄 수 있다.
각각의 graph는  해당 그래프를 마우스로 클릭한 다음 Data--> import를 통해서 데이터을 입력하고 graph 각각을 완성할 수 있다.
 
만약 각각의 그래프를 겹쳐 그리고 싶다면 tick marks, tick labels을 한쪽으로 분리할 필요가 있다. 
normal side(좌측), opposite side(우측)을 사용해서 양쪽으로 분리한다. 이때, both sides(양측)옵션을 각각의 graph에서 동시에 포기한다.

그림이 잘 읽혀지도록 색으로 분리를 할 수 있다. 이 작업이  완료된 다음
Edit--> Overlay graphs를 활용하여 두 개의 graphs를 겹쳐서 그릴 수 있다.

테스트를 위해서 아래와 같은 인위적인 데이터들을 만들어 보았다. 스케일이 다른 두 가지 데이터들이다.  붉은 데이터는 오른쪽 눈금(opposite)으로 읽고 검은색 데이터는 좌측 눈금(normal)으로 읽는다.

-------------------------------
cat aa
 1.  11.4
2.  12.7
3.  13.1
4.  14.56

  cat bb
1.   0.9
2.   2.2
3.   3.54
4.   4.0
-------------------------------

이전에는 주로 첫번째 그림 스타일로 발표를 많이 했었는데(xmgrace를 이용하지 않고 그림.), 다음에는 두번째 스타일로 발표를 한 번 해 보고 싶다.  인위적인 postscript 프로그램을 통해서 사람들이 그림을 그리는 줄 알았다. 하지만, 엄연히 xmgrace에서 지원이 되는 그림 그리기 초식이다. 그동안 나는 이사실을 모르고 지냈었다는 것이다. 최근 논문을 읽다가 이렇게 그리는 것이 조금 더 멋있어 보여서 한 번 더 xmgrace를 찾아 본것이다.  최근 많은 논문들이 컬러 그림을 무료로 지원하고 있다. 적어도 온라인 컬러 그림에 대한 지원은 그렇다고 볼 수 있다. 좀 더 멋있는 그래들을 만들어야 할 것 같다. 보기 좋은 떡이 맛도 있다는 설이 있다.  


참고:
http://incredible.egloos.com/2657517
http://incredible.egloos.com/4120474
http://epb.lbl.gov/xfig/
http://incredible.egloos.com/3632688

-------------------------------
기초적인 xmgrace 사용법

먼저 데이터를 준비한다.
1.   11.
2.   13.
3.    22.
처럼 데이터를 파일에 저장한다. 이 경우는 "XY" Set type이라고 부른다.
이러한 데이터 셋을 하나더 같은 파일에 넣어 줄 수 있다.
이 경우 문자 "&"를 사용하여 독립적인 데이터 셋을 서로 다르게 분리 취급할 수 있다.

아래와 같이 하면 두 가지 데이터 셋들을 하나의 파일에 담아 둘 수 있다.

1.   11.
2.   13.
3.    22.
&
1.    11.4
2.   13.3
3.    22.9

아래와 같이 문자 "#"을 사용하여 코멘트로 사용할 수 있다. 이 문자로 시작하는 라인은 xmgrace가 데이터로 인식하지 않는다.

# first set
1.   11.
2.   13.
3.    22.
&
# second set
1.    11.4
2.   13.3
3.    22.9

다시말해서 프로그래머가 "#", "&"의 용도를 활용할 수 있다. 프로그래머는 프로그램이 보기 좋게 데이터를 정리해서 만들 수 있다.

xmgrace &와 같이 먼저 프로그램을 실행한다. 이 때 새로운 창이 열린다. 
(xmgrace aa.dat 처럼 직접 데이터 파일과 함께 직접 프로그램을 부를수도 있다.)
(xmgrace aa.dat bb.dat 처럼 연속해서 두 개의 데이터 파일을 부를수도 있다.)

Data --> Import --> ASCII   (파일속의 데이터를 직접 불러들인다.)
새로운 창이 열린다.
Set type 에서 하나를 선택한다.
XY  (일반적인 x-y 형식의 데이터 자료형이라고 볼 수 있다.)
XYDY  (y 축에 에러바가 있을 경우)
자료를 포함하는 파일 이름을 직접 입력한다.

Plot --> Axis properties (그래프의 축들에 대한 세부사항들을 직접 입력하여 설정한다.)
새로운 창이 열린다.
X axis
Y axis
각각에 대해서 독립적으로 모든 셋팅을 변화시켜준다.


Plot --> set --> 오른쪽 마우스 클릭
데이터만 지울 수 있다. 그림 그리는 형식은 지우지 않는다. --> Kill data set
형식, 데이터 모두를 지울 수 있다.--> Kill

Plot  --> Set appearance  (데이터들을 그래프에서 원하는 방식으로 표현한다.)
새로운 창이 열린다.
각 데이터 셋에 대해서 표현방식을 선택한다. 데이터 셋이 한개가 아닌경우, Select set에서 원하는 데이터를 클리하여 선택한 다음에 그 데이터의 표현방식을 직접 바꿀 수 있다.

Plot --> Set appearance --> Line --> Fill properties :  "To baseline"
특정 데이터 라인(라인으로 연결하고 이를 선택한 다음에 작업을 수행한다.) 이하를 다른 패턴/색으로 채워넣기를 수행할 수 있다. 

Plot --> Graph appearance (틀, 레전드, 레전드 박스 등을 임의로 조절할 수 있다.)

Plot --> Plot appearance (페이지 백그라운드 색상 조정을 할 수 있다.)

File --> Print setup  (그림으로 저장한다.)
새로운 창이 열린다.
출력 양식을 바꾸어준다. (Device)  PNG, SVG, EPS가 널리 사용되는 방식이다.
File --> Print로 출력을 한다.

-------------------------------




참고: matplotlib, python
http://incredible.egloos.com/3632688


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



---------------------------------------------------------------------------------------------------------------------
import numpy as np
import matplotlib.pyplot as plt

# Create some mock data
t = np.arange(0.01, 10.0, 0.01)
data1 = np.exp(t)
data2 = np.sin(2 * np.pi * t)

fig, ax1 = plt.subplots()

color = 'tab:red'
ax1.set_xlabel('time (s)')
ax1.set_ylabel('exp', color=color)
ax1.plot(t, data1, color=color)
ax1.tick_params(axis='y', labelcolor=color)

ax2 = ax1.twinx()  # instantiate a second axes that shares the same x-axis

color = 'tab:blue'
ax2.set_ylabel('sin', color=color)  # we already handled the x-label with ax1
ax2.plot(t, data2, color=color)
ax2.tick_params(axis='y', labelcolor=color)

fig.tight_layout()  # otherwise the right y-label is slightly clipped
plt.show()


---------------------------------------------------------------------------------------------------------------------



핑백

덧글

  • 바죠 2017/07/05 14:55 #

    distance (\c\E\C)

    옹스트롬을 xmgrace에서 표현한 예
  • 바죠 2011/05/30 16:10 #

    f{Symbol}af{Times}-helix

    alpha-helix를 표현하기 위해서 위와 같은 방식을 활용했다.

    Greek, Times로 폰트를 바꿔어서 사용할 수 있다.

  • 바죠 2012/05/23 15:14 #

    theta_c (degree)

    x qf{}scN(degree)

  • 301-140 2012/11/23 17:29 # 삭제

    감사합니다. 두 개의 다른 y축을 xmgrace에서 한꺼번에 나타내는 그림 그리는 방법을 찾고 있었습니다.
    아직 그리는 중이지만, 정말 많은 도움이 되었습니다.
    앞으로도 좋은 정보 공유 부탁드립니다. 감사합니다. ^^
  • 바죠 2019/05/28 09:35 #

    https://matplotlib.org/gallery/subplots_axes_and_figures/two_scales.html#sphx-glr-gallery-subplots-axes-and-figures-two-scales-py
※ 로그인 사용자만 덧글을 남길 수 있습니다.

최근 포토로그