지식 요소의 가공과 분석, 그리고 여러가지 도구의 활용에 관한 내용

세로로 두 패널로 나뉜 그래프 그리기

Matplotlib figure의 몇 가지 스타일 정의 + 위아래로 합쳐진 그래프 그리기

주로 사용하는 설정들 중, 특히 자주 사용하는 옵션들은 다음과 같이 정의해두고 있습니다. 예로들어 tick은 inward로 해야 한다거나, 외곽선의 두께는 일정수준이 되어야 한다거나 등의 부분입니다. 무엇보다도 다음과 같이 설정해두면, 한 Jupyter Notebook내에서 figure 설정이 동일하게 적용되므로 일관성있게 그래프를 보여 줄 수 있습니다.

# this overwrite all the global option
import matplotlib as mpl

# ticks inward everywhere
mpl.rcParams['xtick.direction'] = 'in'
mpl.rcParams['ytick.direction'] = 'in'

# control tick length/width too
mpl.rcParams['xtick.major.size'] = 6
mpl.rcParams['ytick.major.size'] = 6
mpl.rcParams['xtick.major.width'] = 1.2
mpl.rcParams['ytick.major.width'] = 1.2

mpl.rcParams['xtick.minor.size'] = 3
mpl.rcParams['ytick.minor.size'] = 3
mpl.rcParams['xtick.minor.width'] = 0.8
mpl.rcParams['ytick.minor.width'] = 0.8

# control axis (spine) line thickness
mpl.rcParams['axes.linewidth'] = 1.5

그렇다면 해당 설정을 바탕으로, 위아래로 합친 그래프는 다음과 같이 구성할 수 있습니다. 여기서 Fabio Crameri의 Scientific colour maps의 경우 다음글을 참조하시면 됩니다.

import numpy as np

import matplotlib.pyplot as plt

colP = cm.batlow([0.2, 0.7])
w_test = np.linspace(0, 2.*np.pi, 100)
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True, figsize=(6, 6),
                               gridspec_kw={'hspace': 0.0})#, constrained_layout=True)
ax1.plot(w_test/np.pi, np.sin(w_test), '-', c=colP[0], lw=2.5)


ax2.plot(w_test/np.pi, np.cos(w_test), '-', c=colP[1], lw=2.5)

ax1.set_ylabel(r'$f_1(x)$', fontsize=15)
ax2.set_ylabel(r'$f_2(x)$', fontsize=15)
ax2.set_xlabel(r'$x$', fontsize=15)
ax2.set_xticks([0, 0.5, 1, 1.5, 2], [r'0', r'$\frac{1}{2}\pi$', r'$\pi$', r'$\frac{3}{2}\pi$', r'$2\pi$'])

ax1.tick_params(labelsize=15)
ax2.tick_params(labelsize=15)

ax1.axis([0, 2, -1.1, 1.1])
ax2.axis([0, 2, -1.1, 1.1])
plt.savefig('figs_style/vert_merge_fig.pdf', bbox_inches='tight')

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *