Skip to content

Matplotlib에서 그림 크기 완전 정복: 종합 가이드

Updated on

Matplotlib에서 그림(figure) 크기를 컨트롤하는 것은 깔끔하고 읽기 쉬우며, 논문·보고서에 적합한 고품질 시각화를 만드는 데 가장 중요한 요소 중 하나입니다. 빠른 탐색용 플롯을 만들든, 보고서용으로 정교하게 다듬은 그림을 만들든, 그림 크기를 제대로 설정·조정하는 방법을 알면 왜곡된 차트, 읽기 어려운 레이블, 들쭉날쭉한 레이아웃에서 벗어날 수 있습니다.

이 가이드는 Matplotlib에서 그림 크기를 제어하는 모든 일반적·실용적 방법을 다룹니다:

  • 새 그림을 만들 때 figsize 사용
  • 이미 생성된 그림 크기 조정
  • rcParams를 사용한 전역 기본값 설정
  • 센티미터(cm) 단위로 그림 크기 설정
  • Pandas 플롯에서 크기 변경
  • 전역 크기 기본값 리셋 및 동적 변경
  • 트러블슈팅 가이드
  • 모든 방법을 정리한 비교 표

⭐ TL;DR — 빠른 레퍼런스

작업가장 적합한 방법예시
새 그림의 크기 설정plt.figure(figsize=(w, h))plt.figure(figsize=(8, 6))
존재하는 그림의 크기 변경fig.set_size_inches(w, h)fig.set_size_inches(12, 4)
전역 기본 크기 설정plt.rcParams["figure.figsize"] = ...(12, 6)
Pandas 플롯에서 크기 설정df.plot(figsize=(w, h))(10, 5)
센티미터 사용cm → inch 변환w_cm / 2.54

Matplotlib에서 그림 크기 이해하기

Matplotlib은 그림 크기를 (width, height) 튜플 형태의 인치(inch) 단위로 다룹니다.

고정 크기의 그림을 만드는 가장 직접적인 방법은 다음과 같습니다:

from matplotlib.pyplot import figure
 
# 폭 8인치, 높이 6인치인 새 그림 생성
figure(figsize=(8, 6))

이렇게 하면 데이터셋이나 플롯 타입과 상관없이, 지정한 크기를 그대로 사용하는 그림을 만들 수 있습니다.


이미 존재하는 그림의 크기 조정하기

plt.plot() 이나 Pandas 플롯처럼, 그림이 자동으로 생성되는 경우도 있습니다. 이때도 나중에 크기를 변경할 수 있습니다:

import matplotlib.pyplot as plt
 
# 현재 활성화된 figure 가져오기
fig = plt.gcf()
 
# 크기를 18.5 x 10.5 인치로 변경
fig.set_size_inches(18.5, 10.5)
 
# 크기 변경 후 저장
fig.savefig("figure.png", dpi=100)

set_size_inches()는 그림이 이미 생성된 이후에 크기를 변경하는 가장 신뢰할 수 있는 방법입니다.


rcParams로 전역 기본 그림 크기 설정하기

모든 플롯이 동일한 크기를 따르도록 하고 싶다면(노트북이나 스크립트에서 유용), 전역 기본값을 설정할 수 있습니다:

import matplotlib.pyplot as plt
 
# 이후 생성될 모든 그림을 20 x 3 인치로 설정
plt.rcParams["figure.figsize"] = (20, 3)

이 설정은 이후에 생성되는 모든 플롯에 적용되며, 다른 설정으로 덮어쓸 때까지 유지됩니다.


센티미터 단위로 그림 크기 설정하기

논문이나 보고서처럼 미터법을 요구하는 경우, 센티미터를 인치로 변환해서 사용하면 됩니다:

width_cm = 20
height_cm = 10
 
# cm를 인치로 변환
width_in = width_cm / 2.54
height_in = height_cm / 2.54
 
# 변환한 크기를 사용
figure(figsize=(width_in, height_in))

이 방식은 인치 기반 접근과 완전히 동일하게 동작합니다.


전역 기본값 리셋 또는 동적으로 변경하기

Matplotlib의 원래 기본 설정으로 되돌리려면 다음과 같이 합니다:

plt.rcParams["figure.figsize"] = plt.rcParamsDefault["figure.figsize"]

하나의 노트북에서 작은 빠른 플롯과, 논문용 큰 플롯을 섞어서 사용할 때 특히 유용합니다.


Pandas에서 그림 크기 제어하기

Pandas는 Matplotlib과 바로 연동되며, figsize 인자를 그대로 사용할 수 있습니다:

df['some_column'].plot(figsize=(10, 5))

서브플롯과 함께 사용할 수도 있습니다:

fig, ax = plt.subplots(figsize=(10, 5))
df['some_column'].plot(ax=ax)

이 방법은 데이터 분석 노트북에서 특히 편리합니다.


모든 플롯에 대해 Matplotlib 기본 그림 크기 바꾸기

모든 플롯이 자동으로 동일한 크기로 생성되도록 하려면 다음을 사용할 수 있습니다:

import matplotlib
 
matplotlib.rc("figure", figsize=(10, 5))

이는 rcParams를 직접 수정하는 것과 유사하며, 스크립트와 노트북 전반에 걸쳐 적용됩니다.


🔍 모든 방법 비교

방법언제 사용할까?비고
figure(figsize=...)새 그림을 만들 때가장 일반적으로 추천
set_size_inches()이미 생성된 그림 크기를 바꿀 때자동 생성된 플롯에 유용
plt.rcParams["figure.figsize"]노트북 내부에서 전역 기본 크기를 정할 때EDA에서 가장 자주 사용
matplotlib.rc("figure", figsize=...)스크립트에서 전역 기본 크기를 설정할 때프로덕션 코드에 적합
센티미터 변환학술 논문, 출판사 규격을 맞출 때LaTeX 논문용 등
df.plot(figsize=...)Pandas 워크플로우에서 사용할 때빠른 EDA에 매우 편리

⚠️ 트러블슈팅: figsize가 안 먹히는 것처럼 보일 때 (자주 발생하는 문제)

1. Jupyter Notebook에서 figsize가 무시되는 것 같을 때

다음 매직 커맨드를 사용해 보세요:

%matplotlib inline

2. tight layout 때문에 레이블이 잘려 나갈 때

다음으로 자동 레이아웃 조정을 적용합니다:

plt.tight_layout()

3. 그림을 저장할 때 크기가 달라 보일 때

항상 DPI를 명시적으로 설정하세요:

plt.savefig("output.png", dpi=150)

4. 폰트나 레이블 크기가 예상과 다르게 스케일될 때

자동 레이아웃 스케일링을 끄는 방법입니다:

plt.rcParams['figure.autolayout'] = False

5. 서브플롯이 서로 겹칠 때

그림 크기를 키우면 도움이 됩니다:

fig, ax = plt.subplots(figsize=(12, 8))

이러한 트러블슈팅 항목들은 Matplotlib 관련 검색에서 상위에 노출되는 주제이자, 사용자들이 자주 겪는 실질적인 불편을 해결해 줍니다.


Matplotlib의 대안: PyGWalker로 데이터 시각화하기

Matplotlib 외에도, PyGWalker를 사용하면 pandas DataFrame을 드래그 앤 드롭 방식으로 손쉽게 탐색할 수 있습니다. PyGWalker는 오픈 소스 데이터 시각화 도구입니다:

PyGWalker for Data visualization (opens in a new tab)

Jupyter 안에서 사용하기:

pip install pygwalker
import pygwalker as pyg
 
gwalker = pyg.walk(df)

또는 온라인에서 바로 사용해 볼 수도 있습니다:

Kaggle NotebookGoogle ColabGitHub ⭐
https://www.kaggle.com/asmdef/pygwalker-test (opens in a new tab)https://colab.research.google.com/drive/171QUQeq-uTLgSj1u-P9DQig7Md1kpXQ2 (opens in a new tab)https://github.com/Kanaries/pygwalker (opens in a new tab)

자주 묻는 질문 (FAQ)

  1. Matplotlib에서 그림 크기를 어떻게 설정하나요?
    figure(figsize=(width, height))를 사용합니다.

  2. 이미 생성된 그림의 크기를 바꾸려면 어떻게 하나요?
    fig.set_size_inches(w, h) 메서드를 사용합니다.

  3. Pandas 플롯에서도 그림 크기를 바꿀 수 있나요?
    네, figsize=(w, h) 인자를 사용하면 됩니다.