이전 포스팅에서는 matplotlib 라이브러리를 사용해서 그래프를 그리기 위한 기초 단계를 정리했습니다.
figure 객체를 생성한 뒤 add_subplot, subplots, subplot2grid, add_axes 메서드를 사용해서 그래프 레이아웃을 구성해봤는데요, 이번에는 그래프의 위치와 간격을 조정하는 방법에 대해 알아보도록 하겠습니다.
이전 정리글을 읽고 본 포스팅을 읽는다면 보다 더 원활한 이해가 가능합니다.
추가로 넘파이 배열을 사용하기 위해 NumPy 라이브러리를 불러오도록 하겠습니다.
matplotlib 사용법 기초(figure, add_subplot, subplots, subplot2grid, add_axes)
이번 포스팅부터는 파이썬으로 데이터 시각화를 할 수 있는 matplotlib 라이브러리를 사용해 볼 예정입니다. 하지만 당장 여러 종류의 그래프를 그리기 이전에 기초 공사부터 탄탄히 진행하고 넘
parix-data.tistory.com
import matplotlib.pyplot as plt
import numpy as np
fig.tight_layout()
fig.tight_layout(pad)
title_list = ['ax' + str(i) for i in range(4)]
xlabel_list = ['label_x' + str(i) for i in range(4)]
ylabel_list = ['label_y' + str(i) for i in range(4)]
fig, axes = plt.subplots(2, 2, figsize=(7, 7))
for ax_idx, ax in enumerate(axes.flat):
ax.set_title(title_list[ax_idx], fontsize=30)
ax.set_xlabel(xlabel_list[ax_idx], fontsize=20)
ax.set_ylabel(ylabel_list[ax_idx], fontsize=20)
fig.tight_layout() 메서드는 서로 다른 ax들끼리 겹치지 않도록 ax들 사이의 간격과 figure의 상하좌우 간격을 자동으로 조정합니다.
ax별 title과 x_label, y_label을 고려해서 겹치지 않는 레이아웃을 구성하는 것입니다.
그 결과 깔끔한 그래프 레이아웃을 얻게 됩니다.
위 코드는 fig.tight_layout() 메서드를 실행하지 않고 그래프를 그립니다.
그 결과 다음과 같이 서로 다른 ax끼리 겹치게 됩니다.
title_list = ['ax' + str(i) for i in range(4)]
xlabel_list = ['label_x' + str(i) for i in range(4)]
ylabel_list = ['label_y' + str(i) for i in range(4)]
fig, axes = plt.subplots(2, 2, figsize=(7, 7), facecolor='linen')
for ax_idx, ax in enumerate(axes.flat):
ax.set_title(title_list[ax_idx], fontsize=30)
ax.set_xlabel(xlabel_list[ax_idx], fontsize=20)
ax.set_ylabel(ylabel_list[ax_idx], fontsize=20)
fig.tight_layout(pad=6) # ⭐️
하지만 fig 객체에 tight_layout() 메서드를 적용하면 다음과 같이 ax 사이 간격이 자동으로 생성됩니다.
매개변수 pad의 값을 통해 ax 사이의 간격을 조절할 수 있습니다.
fig.subplots_adjust()
fig.subplots_adjust(left, bottom, right, top, wspace, hspace)
fig.subplots_adjust() 메서드는 ax 사이의 간격과 figure의 상하좌우 간격을 각각 설정합니다.
전달 가능한 매개변수의 종류는 6가지로 다음과 같습니다.
- positional arguments: figure의 상하좌우 간격을 설정합니다. (left, bottom, right, top)
- spacing arguments: ax 사이의 간격을 설정합니다. (wspace, hspace)
fig, axes = plt.subplots(3, 3, figsize=(10, 10), facecolor='skyblue')
for ax_idx, ax in enumerate(axes.flat):
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
fig.subplots_adjust(hspace=0.2, wspace=0.05)
위 코드는 총 9개의 ax를 그리는데 각 ax별 사이의 가로 간격은 0.05, 세로 간격은 0.2로 설정합니다.
그 결과 다음과 같은 레이아웃을 구성할 수 있습니다.
정리를 마치며
이상으로 matplotlib 라이브러리를 사용해 그래프의 위치와 간격을 설정하는 API에 대해 정리했습니다.
tight_layout()과 subplots_adjust() 두 가지 메서드를 알아봤는데요, 서로 다른 그래프들끼리 겹칠 때 자주 사용하는 만큼 꼭 기억해두는 것이 좋을 것 같습니다.
'파이썬・ML > matplotlib・seaborn' 카테고리의 다른 글
matplotlib 사용법 기초(add_subplot/subplots/subplot2grid/add_axes) (0) | 2023.07.26 |
---|