일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 논문작성법
- Statics
- matplotlib
- 수치해석
- obsidian
- 텝스공부
- 논문작성
- IEEE
- 우분투
- 텝스
- MATLAB
- Dear abby
- WOX
- Julia
- Python
- Zotero
- 수식삽입
- 생산성
- ChatGPT
- LaTeX
- 인공지능
- 에러기록
- Numerical Analysis
- 옵시디언
- Linear algebra
- pytorch
- JAX
- 고체역학
- 딥러닝
- teps
- Today
- Total
뛰는 놈 위에 나는 공대생
[Matplotlib] Matplotlib savefig 기능 정리 본문
Matplotlib은 figure를 도출하기 위해 중요한 라이브러리이다.
이 figure를 파일로 저장하기 위해서는 savefig라는 함수를 쓰는데 이 함수에서 설정할 수 있는 것들에 대해 이야기하려고 한다.
1. savefig의 argument
savefig(fname, *, dpi='figure', format=None, metadata=None,
bbox_inches=None, pad_inches=0.1,
facecolor='auto', edgecolor='auto',
backend=None, **kwargs
)
위의 savefig argument에서 fname은 저장할 파일이름이다.
여기에서 확장자를 지정하지 않으면 default로 png 파일로 저장한다.
format에서도 확장자를 지정할 수 있다.
dpi는 이미지의 resolution인데, (dots per inch)라는 뜻이다. 일반적으로 인쇄물에 넣는 png의 해상도는 아주 높아야할 것이다. 최소 300에서 높게는 600-800까지.
하지만 인쇄물에 쓸 거라면 pdf, eps와 같은 벡터 이미지 저장을 권장한다.
2. bbox_inches & pad_inches
bbox_inches는 figure가 저장되는 bounding box를 의미한다. 기본적으로는 None으로 되어있어서 figure 그대로를 저장하게 되고, 'tight'라고 설정하면 figure 안에서 제일 작게 만들 수 있는 영역만 지정하게 된다. 즉, figure 주변의 여백을 모두 제거한다.
예를 들어 내가 figsize를 500x500 pixels로 지정했는데, axes fontsize를 다르게 한 경우를 보자.
위의 두 사진은 테두리 포함 크기가 동일하다. (구별하기 쉽도록 테두리는 tistory의 기능으로 추가한 것이다.)
그런데 axes의 font 크기가 달라서 두 그림의 여백이 다르게 된다. 즉, matplotlib 자체 내에서 figsize를 유지하면서 흰 여백을 그림에 맞게 추가한다는 뜻이다.
내가 'tight'로 설정하면 이런 여백이 날아가게 된다.
그리고 pad_inches에서는 bbox_inches에서 'tight'라고 지정할 때 추가적으로 붙여주는 padding의 크기를 의미한다. default로 0.1inch로 되어있다.
따라서 어떤 이미지를 저장할 때 아래와 같이 설정한다고 하자.
plt.savefig(fname='image.png', bbox_inches='tight', pad_inches=0)
그러면 내가 저장하고 싶은 figure에서 축과 그림을 제외한 나머지는 날아간 채로 저장하게 된다.
그런데 이럴 경우에는 내가 지정해놓은 figsize와 다른 figure 크기가 될 수 있다고 stackoverflow에 나와있다.따라서 본인이 원하는 figure size를 유지할 때는 bbox_inches를 'tight'로 두는 것을 권장하지 않는다.
3. face_colors & edge_colors
이 기능은 3.6부터 error를 발생시키는 argument이므로 설명하지 않는다.
'프로그래밍 Programming > 파이썬 Python' 카테고리의 다른 글
[에러기록] matplotlib에서 figure만 그려지고 plot이 없는 경우 (0) | 2022.12.27 |
---|---|
[에러기록] Visual studio code에서 아나콘다 가상환경이 안 돌아갈 때 (0) | 2022.11.01 |
[Python] matplotlib default 설정 (0) | 2022.07.16 |
[PyTorch] gradient descent로 변수를 직접 update할 때 주의할 점 (0) | 2022.07.14 |
[PyTorch] DataLoader shuffle 기능 사용 시, RuntimeError: Expected a 'cuda' device type for generator but found 'cpu' (0) | 2022.07.14 |