[연구 자동화 #6] 시각화의 시작: Matplotlib으로 논문용 고해상도 그래프 그리기


우리는 흔히 "백문이 불여일견"이라고 말합니다. 수만 줄의 데이터 표를 보여주는 것보다, 경향성이 뚜렷하게 나타나는 그래프 한 장이 훨씬 강력한 설득력을 갖기 때문입니다. 하지만 많은 연구원이 엑셀에서 그래프를 그린 뒤, 이를 캡처하거나 해상도를 높이기 위해 포토샵을 거치는 번거로운 작업을 반복합니다.

파이썬의 시각화 라이브러리인 Matplotlib을 사용하면 이러한 노가다에서 완전히 해방될 수 있습니다. 단순히 예쁜 그림을 그리는 것을 넘어, 학술지가 요구하는 엄격한 규격(DPI, 폰트 크기, 벡터 형식 등)을 코드로 정밀하게 제어하는 법을 배워봅시다.


1. Matplotlib의 구조 이해: 도와지와 캔버스

Matplotlib을 처음 접하면 용어가 조금 생소할 수 있습니다. 가장 핵심적인 두 가지만 기억하세요.

  • Figure (피규어): 그래프가 그려지는 전체 도화지입니다. 여러 개의 그래프를 한 장에 담을 수도 있습니다.

  • Axes (액시즈): 도화지 안에 그려지는 개별 그래프(축)를 말합니다.

우리는 이 도화지 위에 선을 긋고, 제목을 붙이고, 눈금을 조절하는 작업을 코드로 수행하게 됩니다.


2. 실전: 기본 그래프 그리기와 스타일링

가장 기본적인 꺾은선 그래프(Line Plot)를 그려보겠습니다. 주피터 노트북에 아래 코드를 입력해 보세요.

Python
import matplotlib.pyplot as plt
import pandas as pd

# 임무 데이터 생성 (지난 시간에 합친 final_df가 있다고 가정)
# 예시를 위해 간단한 리스트를 사용하겠습니다.
x = [1, 2, 3, 4, 5]
y = [10, 25, 13, 32, 20]

# 1. 그래프 생성 및 크기 설정 (단위: 인치)
plt.figure(figsize=(8, 5))

# 2. 선 그리기 (색상, 선 굵기, 마커 설정)
plt.plot(x, y, color='blue', linewidth=2, marker='o', label='Sample A')

# 3. 축 이름 및 제목 설정
plt.xlabel('Time (sec)', fontsize=12)
plt.ylabel('Value (unit)', fontsize=12)
plt.title('Experimental Result Analysis', fontsize=14)

# 4. 범례(Legend) 및 그리드 표시
plt.legend()
plt.grid(True, linestyle='--', alpha=0.6)

# 5. 그래프 출력
plt.show()

이 코드를 실행하면 엑셀보다 훨씬 깔끔하고 전문적인 느낌의 그래프가 출력됩니다. 하지만 여기서 끝내면 '연구 자동화'라고 부를 수 없죠.


3. 논문용 고해상도 저장 기법

논문 심사 시 가장 흔하게 받는 지적 중 하나가 "그래프의 해상도가 낮다"는 것입니다. 대부분의 저널은 300 DPI 이상 혹은 벡터 형식(PDF, SVG)을 요구합니다.

  • DPI 설정 저장: plt.savefig('result.png', dpi=600)

    • 이렇게 저장하면 확대를 해도 깨지지 않는 600 DPI의 초고화질 이미지를 얻을 수 있습니다.

  • 벡터 파일 저장: plt.savefig('result.pdf') 또는 plt.savefig('result.svg')

    • 벡터 형식은 이미지 파일이 아니라 수학적 계산으로 그려진 파일이므로, 크기를 아무리 키워도 선이 매끄럽게 유지됩니다. 논문 투고 시 가장 권장되는 방식입니다.


4. 폰트와 한글 깨짐 문제 해결하기

Matplotlib은 기본적으로 영문 폰트를 사용합니다. 그래서 그래프에 한글을 쓰면 글자가 깨져서 나오죠. 연구 보고서를 작성할 때 당황하지 마세요.

Python
# 한글 폰트 설정 (윈도우 기준)
plt.rc('font', family='Malgun Gothic')
# 마이너스 기호 깨짐 방지
plt.rcParams['axes.unicode_minus'] = False

이 두 줄만 추가하면 그래프에 한글 제목과 범례를 마음껏 넣을 수 있습니다.


5. 마치며: 시각화는 데이터의 마지막 인상입니다

시각화는 단순히 데이터를 예쁘게 포장하는 단계가 아닙니다. 내가 발견한 현상을 가장 명확하고 정직하게 전달하는 과학적 소통의 과정입니다. 엑셀의 정형화된 디자인에서 벗어나, 파이썬을 통해 여러분의 연구 데이터에 최적화된 옷을 입혀주세요.

처음에는 선의 굵기나 폰트 크기를 코드로 조절하는 게 어색할 수 있습니다. 하지만 한 번 내 마음에 쏙 드는 '그래프 템플릿' 코드를 만들어두면, 앞으로 어떤 데이터를 가져오든 1초 만에 논문용 그래프로 변신시킬 수 있습니다.


## 핵심 요약

  • Matplotlib은 학술지 규격을 정밀하게 제어할 수 있는 파이썬 표준 시각화 도구입니다.

  • plt.savefig() 함수를 활용해 300~600 DPI의 고해상도 이미지나 벡터 형식(PDF)으로 저장하는 것이 논문 투고의 정석입니다.

  • Figure와 Axes의 개념을 이해하면 한 화면에 여러 개의 그래프를 배치하는 등 고난도 시각화가 가능해집니다.


## 다음 편 예고

선 그래프만으로는 부족할 때가 있죠? 다음 시간에는 [고급 시각화: Seaborn으로 통계적 유의성을 보여주는 히트맵과 박스플롯 그리기]를 다룹니다. 복잡한 통계 수치를 한눈에 보여주는 마법을 기대하세요.


## 소통 질문

여러분은 논문을 쓸 때 어떤 그래프 형식을 가장 자주 사용하시나요? (예: Line, Bar, Scatter 등) 혹은 엑셀로 그래프를 그리면서 가장 수정하기 힘들었던 부분은 무엇이었나요? 댓글로 남겨주시면 맞춤형 팁을 드릴게요!



댓글

이 블로그의 인기 게시물

[연구 자동화 #1] 엑셀의 한계를 넘어 파이썬으로: 연구 데이터 관리의 새로운 표준