1. 그래프 저장 방법
오늘은 단순히 멋진 그래프를 그리는 것에 그치지 않고, 이를 보고서, 프레젠테이션 또는 "봐봐, 내가 했다!"라는 상황용 앨범에 삽입할 수 있는 멋진 이미지로 변환하는 방법을 배워볼 거야. 누가 알겠어, 네 그래프가 SNS에서 바이럴 되어서 드디어 15분의 짧은 명성을 얻을지도 몰라!
마치 좋은 요리 쇼에서 레시피를 고르는 것처럼, 우리는 그래프를 저장할 수 있는 다양한 파일 형식을 살펴보는 것부터 시작할 거야. 각 형식은 고유한 특징을 가지고 있어서 이를 이해하면 네 "메뉴"에 맞는 적당한 "요리"를 선택하는 데 도움이 될 거야. 몇 가지 예를 들어볼게:
- PNG (Portable Network Graphics): 웹 그래픽에서 가장 인기 있는 형식 중 하나야. 품질 손실 없는 압축, 투명성 지원, 그리고 대부분의 애플리케이션에서의 뛰어난 호환성을 제공해.
- PDF (Portable Document Format): 문서에 삽입하기에 이상적이야. 벡터 형식으로 저장돼서 확대 시에도 이미지 품질이 유지돼.
- SVG (Scalable Vector Graphics): 또 다른 벡터 형식으로 웹에 적합해. 상호작용성과 애니메이션을 지원해.
- JPEG (Joint Photographic Experts Group): 보통 사진에 사용돼. 손실 압축이 있어서 텍스트가 있는 그래프에는 적합하지 않을 수 있어.
이제 선택지가 무엇인지 알았으니 Matplotlib 라이브러리의 savefig()
함수를 사용해 그래프를 저장하는 것에 대해 알아보자.
savefig()로 그래프 저장하기
Matplotlib은 그래프를 저장하는 과정을 스마트폰에서 OS를 업데이트하는 것처럼 (계획대로라면) 거의 고통 없이 만들어줘. 어떻게 하는지 알아보자.
import matplotlib.pyplot as plt
# 간단한 그래프
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.plot(x, y, label='소수')
plt.xlabel('x')
plt.ylabel('y')
plt.title('소수의 선형 그래프')
plt.legend()
# 그래프를 파일로 저장
plt.savefig('primes.png')
이 코드는 현재 디렉토리에 primes.png
파일을 생성해. 이게 다야! 암호를 외우거나 디지털 신에게 제물을 바칠 필요 없어. 대신
plt.show()
를 호출하는 대신 plt.savefig('경로/파일이름')
을 호출하면 돼!
2. 저장 매개변수 조정하기
그래프를 단순히 저장하는 것만으로는 부족해 — 그래프가 멋지게 보이기를 원하잖아! "품질이 나쁜 그래프는 누구도 신경 쓰지 않는다"는 옛말이 있지 (아마 그런 말이 있을 거야?).
이미지 품질과 해상도 조정
고품질 이미지를 만들기 위해서 dpi
(dots per inch)라는 매개변수를 조정하면 돼. 이 값은 이미지의
픽셀 밀도를 결정해. 값이 높을수록 더 세밀한 이미지가 돼. 웹용으로는 보통 72 dpi로 충분하고, 인쇄용으로는 300 dpi 이상이
필요해.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]
plt.plot(x, y)
# 고해상도 그래프 저장
plt.savefig("high_quality_plot.png", dpi=300)
plt.show()
여기서 dpi=300
은 이미지 품질을 높여주고 그래프를 더 선명하게 만들어줘. 특히 보고서나 인쇄물에
유용해.
테두리와 여백 없이 저장하기
Matplotlib은 기본적으로 그래프 주위에 여백을 추가해. 하지만 보고서에 삽입하기에는 항상 편리하지는 않을 수 있어. 여백 없이
이미지를 저장하려면 bbox_inches="tight"
매개변수를 사용하면 돼.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [5, 10, 15, 20, 25]
plt.plot(x, y)
# 테두리 없이 그래프 저장
plt.savefig("plot_no_borders.png", bbox_inches="tight")
plt.show()
bbox_inches="tight"
매개변수는 그래프 주위의 불필요한 여백을 제거해서 더 컴팩트한 이미지를
만들어줘.
저장 전에 그래프 크기 설정
때로는 특정 크기로 그래프를 저장해야 할 때가 있어 (예를 들어 발표 자료나 웹 게시글용으로). figure(figsize=(너비, 높이))
를
사용해서 그래프 크기를 인치 단위로 지정할 수 있어.
import matplotlib.pyplot as plt
# 그래프 크기 설정
plt.figure(figsize=(10, 5)) # 너비 10인치, 높이 5인치
x = [1, 2, 3, 4, 5]
y = [5, 10, 15, 20, 25]
plt.plot(x, y)
plt.title("크기가 지정된 그래프")
# 지정된 크기로 그래프 저장
plt.savefig("custom_size_plot.png")
plt.show()
이 예제에서 그래프는 10x5 인치 크기로 저장돼. 필요에 따라 보고서나 발표 자료에 맞게 크기를 조정할 수 있어.
추가 savefig() 매개변수
transparent=True
: 투명 배경으로 이미지를 저장해. 컬러 또는 투명 배경에 삽입할 때 유용해.pad_inches
: 그래프 주위에 추가 여백을 설정해.bbox_inches
와 함께 사용돼.format
: 저장할 파일 형식을 지정해: pdf, png, jpg 등
format
매개변수가 지정되지 않으면 savefig()
는 파일 이름을 기반으로 형식을 결정하려고 시도해.
# 매개변수를 설정하여 그래프 저장
plt.savefig('primes_high_res', dpi=300, pad_inches='tight', format='png', transparent=True)
이제 네 그래프는 너무 선명해서 보는 사람이 "와우, 진짜 잘했네!"라고 말할 거야.
3. 저장 예제
보통 우리는 테스트나 디버깅을 위해 여러 예제를 사용하지. 이를 통해 다양한 매개변수가 최종 결과에 어떤 영향을 미치는지 이해할 수 있어.
PDF 형식으로 저장
그래프를 보고서나 발표 자료에 삽입해야 한다면 PDF 형식이 이에 딱이야. 벡터 속성이 있어서 품질 손실 없이 확대할 수 있어.
plt.savefig('primes.pdf', bbox_inches='tight')
벡터 형식 SVG로 저장
SVG는 웹 페이지나 애니메이션 플러그인에 적합해. 상호작용 기능을 추가할 수 있는 속성을 가지고 있어.
plt.savefig('primes.svg', bbox_inches='tight')
JPEG 형식으로 저장
그래프에 선명한 선이나 텍스트보다는 이미지가 주를 이룬다면 JPEG 형식이 유용할 수 있어.
plt.savefig('primes.jpg', quality=95)
꿀팁
- 파일 이름: 파일을 쉽게 찾고 재사용할 수 있도록 명확하고 설명적인 이름을 선택해.
- 품질 확인: 보고서에 포함하기 전에 화면에서 그래프를 확인해서 품질이 요구사항에 부합하는지 확인해.
- 투명 배경 사용: 프레젠테이션이나 웹사이트용 그래프 제작 시 컬러 배경에 잘 어울려.
일반적인 문제
그래프를 저장할 때 마치 프린터 드라이버를 업데이트하려고 할 때처럼 오류가 발생할 수 있어. 가장 흔한 문제 중 하나는 Jupyter Notebook 같은
환경에서는 savefig()
함수가 제대로 작동하지 않는 경우야. 이건 이런 대화형 환경에서 그래프가 저장되지 않고
표시만 될 수 있기 때문이야. 이 경우에는 plt.close()
메서드를 사용해서 그래프를 저장한 후 닫아주면 돼.
GO TO FULL VERSION