backend란?
`matplotlib.get_backend()` 함수는 현재 Matplotlib의 백엔드(backend)를 반환합니다. Matplotlib는 다양한 그래픽 백엔드를 지원하며, 이는 그래픽을 생성하고 화면에 표시하는 방식을 제어합니다. 백엔드는 GUI 환경 또는 파일 형식으로 출력할 때 사용되는 엔진이라고 생각할 수 있습니다.
예를 들어, Matplotlib은 TkAgg, Qt5Agg, Agg, SVG 등 다양한 백엔드를 지원합니다. 각 백엔드는 특정 용도나 요구 사항에 맞게 선택될 수 있습니다. 예를 들어, 대화식 GUI를 사용하여 그림을 표시하려면 TkAgg나 Qt5Agg와 같은 백엔드를 선택할 수 있습니다. 반면에 이미지를 파일로 저장하려면 Agg나 SVG와 같은 다른 백엔드를 선택할 수 있습니다.
`matplotlib.get_backend()`를 사용하면 현재 설정된 백엔드를 확인할 수 있습니다. 이것은 특히 Matplotlib을 사용하는 코드에서 어떤 백엔드가 활성화되어 있는지 확인하는 데 유용합니다.
backend 종류
Static backends
Interactive backends
backend 변경하기
backend를 변경하는 방법은 네가지가 있습니다.
1. matplotlibrc파일을 직접 수정하는 방법
2. MPLBACKEND 환경변수로 설정하는 방법
3. matplotlib.use()를 사용하는 방법
4. rcParams["backend"]로 수정하기
1. matplotlibrc 파일 직접 수정하기
rc는 runtime configuration를 뜻합니다.
이 configuration을 'rc settings' or 'rc parameters' 라고도 부릅니다.
rc를 수정하여 matplotlib의 거의 모든 defalut properties를 변경할 수 있습니다.
해당 파일의 경로는 다음과 같습니다. (matplotlib 라이브러리 설치가 되어있어야 합니다.)
파이참
/venv/lib/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc
코랩
/usr/local/lib/python3.10/dist-packages/matplotlib/mpl-data/matplotlibrc
VS Code
/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc
위 경로는 matplotlib_fname()을 통해 얻을 수 있습니다. 개발환경에 따라 경로가 다르기 때문에 확인이 필요합니다.
print(matplotlib.matplotlib_fname())
혹은 find명령어를 사용하여 파일 경로를 찾습니다. 저는 Google Colab에서 설치하였기 때문에 하위 디렉토리를 탐색하여 matplotlibrc를 찾았습니다. 경로는 './usr/local/lib/python3.10/dist-packages/matplotlib/mpl-data'입니다.
$find . -name 'matplotlibrc'
$find / -name 'matplotlibrc'
Colab에서 해당 디렉토리로 이동하여 편집기로 파일을 열려고 하였으나.. Colab에서는 vim을 사용할 수 없더라고요.. 로컬 환경이나 파이참을 사용하면 terminal을 통해 수정이 가능합니다.
* matplotlibrc를 임의로 수정하기 전에 미리 백업파일을 준비하시길 권장합니다.
$vim [matplotlibrc 경로]
사진처럼 BACKENDS 부분을 찾은 후에 backend: Agg 부분을 수정하면 됩니다. Agg는 non-interactive한 backend 설정으로 단순 output만 가능합니다.
* 주석을 제거할 필요는 없습니다.
* 수정을 했는데 backend가 변경되지 않는다면 터미널을 다시 실행해보세요.
2. MPLBACKEND 환경변수로 설정하는 방법
1번 방법은 비교적 복잡하지만 backend 외의 다른 기본 설정들을 변경할 수 있어 유용합니다.
2번 방법은 아주 간단합니다. (맨 아래 주의사항이 있습니다!)
$export MPLBACKEND=[backend]
[backend] 부분에 원하는 backend 파라미터를 넣으면 끝입니다.
vscode로 확인해보겠습니다.
import matplotlib
print(matplotlib.matplotlib_fname())
print(matplotlib.get_backend())
후딱후딱 변경이 잘 되네요.
하지만 이렇게 환경 변수를 설정하면 현재 작업 중인 디렉토리에 있는 matplotlibrc 파일에 설정된 백엔드 매개 변수를 무시하고, 이 환경 변수에 설정된 값이 우선적으로 사용됩니다. 따라서 MPLBACKEND 환경변수를 설정하는 것은 권장되지 않습니다.
3. matplotlib.use()를 사용하는 방법
python script에서 쉽게 backend를 설정할 수 있는 방법이 있습니다.
바로 use()를 사용하는 것인데요.
아주 간단합니다.
import matplotlib
matplotlib.use('qtagg')
print(matplotlib.get_backend())
matplotlib.use('agg')
print(matplotlib.get_backend())
matplotlib.use('macosx')
print(matplotlib.get_backend())
4. rcParams["backend"]로 수정하기
1번과 비슷한 맥락이지만 script로 간단하게 수정하는 방법이 있습니다.
matplotlib의 모든 파라미터를 담은 녀석을 수정하는 방법입니다.
우선 rcParams의 내용을 확인해봅시다.
import matplotlib
print(matplotlib.rcParams)
_internal.classic_mode: False
agg.path.chunksize: 0
animation.bitrate: -1
animation.codec: h264
animation.convert_args: ['-layers', 'OptimizePlus']
animation.convert_path: convert
...
ytick.minor.pad: 3.4
ytick.minor.right: True
ytick.minor.size: 2.0
ytick.minor.visible: False
ytick.minor.width: 0.6
ytick.right: False
약 316개의 파라미터를 확인할 수 있습니다.
우리는 backend를 수정해야하니 현재 값이 뭔지 확인해봅시다.
import matplotlib
print("backend:", matplotlib.rcParams["backend"])
backend: MacOSX
수정은 간단합니다. key에 해당하는 value를 딕셔너리 수정하듯 수정하면 됩니다.
import matplotlib
matplotlib.rcParams["backend"] = 'agg'
print("backend:", matplotlib.rcParams["backend"])
backend: agg
마치며
사실 강화학습을 공부하려던 중 파이토치 튜토리얼에서 처음 보는 코드를 마주하였습니다. 바로 위 내용인데요..
호기심 천국인 카라멜보틀이 그냥 넘어갈 수 없었기에 이렇게 포스팅을 해보았습니다.
다음 시간에도 즐겁게 탐구해보도록 하겠습니다!!
그럼 이만!~
'파이썬 > 심화' 카테고리의 다른 글
[파이썬] in의 시간복잡도와 set의 자료구조에 대한 궁금증 (0) | 2024.01.12 |
---|---|
[파이썬] [SSL: CERTIFICATE_VERIFY_FAILED] 해결방법 (0) | 2024.01.11 |
댓글