Matplotlib 이미지 저장하기


Matplotlib 이미지 저장하기

matplotlib.pyplot 모듈의 savefig() 함수를 사용해서 그래프를 이미지 파일 등으로 저장하는 방법을 소개합니다.



1) 기본 사용

예제

import numpy as np
import matplotlib.pyplot as plt

x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)

y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

plt.subplot(2, 1, 1)                # nrows=2, ncols=1, index=1
plt.plot(x1, y1, 'o-')
plt.title('1st Graph')
plt.ylabel('Damped oscillation')

plt.subplot(2, 1, 2)                # nrows=2, ncols=1, index=2
plt.plot(x2, y2, '.-')
plt.title('2nd Graph')
plt.xlabel('time (s)')
plt.ylabel('Undamped')

plt.tight_layout()
# plt.show()
plt.savefig('savefig_default.png')

savefig() 함수에 파일 이름을 입력해주면 아래와 같은 이미지 파일이 저장됩니다.


Matplotlib 이미지 저장하기 - 기본 사용

Matplotlib 이미지 저장하기 - 기본 사용





2) dpi 설정하기

예제

plt.savefig('savefig_default.png')
plt.savefig('savefig_50dpi.png', dpi=50)
plt.savefig('savefig_200dpi.png', dpi=200)

dpi (Dots per Inch)는 이미지의 해상도를 설정합니다. 디폴트는 dpi=100입니다.

해상도에 따라 아래와 같은 이미지가 저장됩니다.

Matplotlib 이미지 저장하기 - dpi 설정하기

Matplotlib 이미지 저장하기 - dpi 설정하기




3) facecolor 설정하기

예제

plt.savefig('savefig_facecolor.png', facecolor='#eeeeee')

facecolor는 이미지의 배경색을 설정합니다.

아래와 같은 이미지가 저장됩니다.


Matplotlib 이미지 저장하기 - facecolor 설정하기

Matplotlib 이미지 저장하기 - facecolor 설정하기





4) edgecolor 설정하기

예제

import numpy as np
import matplotlib.pyplot as plt

plt.figure(linewidth=2)

x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)

y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

plt.subplot(2, 1, 1)                # nrows=2, ncols=1, index=1
plt.plot(x1, y1, 'o-')
plt.title('1st Graph')
plt.ylabel('Damped oscillation')

plt.subplot(2, 1, 2)                # nrows=2, ncols=1, index=2
plt.plot(x2, y2, '.-')
plt.title('2nd Graph')
plt.xlabel('time (s)')
plt.ylabel('Undamped')

# plt.show()
plt.savefig('savefig_edgecolor.png', facecolor='#eeeeee', edgecolor='blue')

edgecolor는 이미지의 테두리선의 색상을 설정합니다.

테두리선의 너비가 기본적으로 0이기 때문에 먼저 linewidth=2로 설정해 준 다음 테두리 색을 지정합니다.

아래와 같은 이미지가 저장됩니다.


Matplotlib 이미지 저장하기 - edgecolor 설정하기

Matplotlib 이미지 저장하기 - edgecolor 설정하기





5) bbox_inches 설정하기

예제

plt.savefig('savefig_bbox_inches.png', facecolor='#eeeeee')
plt.savefig('savefig_bbox_inches2.png', facecolor='#eeeeee', bbox_inches='tight')

bbox_inches는 그래프로 저장할 영역을 설정합니다.

디폴트로 None이지만, ‘tight’로 지정하면 여백을 최소화하고 그래프 영역만 이미지로 저장합니다.


Matplotlib 이미지 저장하기 - bbox_inches 설정하기 (디폴트)

Matplotlib 이미지 저장하기 - bbox_inches 설정하기 (디폴트)


Matplotlib 이미지 저장하기 - bbox_inches 설정하기 (tight)

Matplotlib 이미지 저장하기 - bbox_inches 설정하기 (tight)





6) pad_inches 설정하기

예제

plt.savefig('savefig_pad_inches.png', facecolor='#eeeeee',
            bbox_inches='tight', pad_inches=0.3)
plt.savefig('savefig_pad_inches2.png', facecolor='#eeeeee',
            bbox_inches='tight', pad_inches=0.5)

bbox_inches=’tight’로 지정하면 pad_inches를 함께 사용해서 여백 (Padding)을 지정할 수 있습니다.

pad_inches의 디폴트 값은 0.1이며, 0.3과 0.5로 지정했을 때의 결과는 아래와 같습니다.


Matplotlib 이미지 저장하기 - pad_inches 설정하기 (0.3)

Matplotlib 이미지 저장하기 - pad_inches 설정하기 (0.3)


Matplotlib 이미지 저장하기 - pad_inches 설정하기 (0.5)

Matplotlib 이미지 저장하기 - pad_inches 설정하기 (0.5)



이전글/다음글