"Jupyter에서는 어떻게 써요?"
지윤이 노트북을 열면서 물었다. 팀에서 분석 작업은 대부분 Jupyter Notebook에서 이루어졌다.
"거기서도 똑같이 쓰면 되는데, 매직 커맨드 하나를 미리 넣어야 해요."
Jupyter Notebook에서의 Matplotlib
Jupyter Notebook에서 Matplotlib을 사용할 때는 그래프가 노트북 안에 표시되도록 설정이 필요합니다.
%matplotlib inline
가장 기본적인 설정입니다. 셀을 실행할 때 그래프가 셀 아래에 이미지로 출력됩니다.
%matplotlib inlineimport matplotlib.pyplot as pltplt.plot([1, 2, 3], [4, 5, 6])plt.show()
%matplotlib inline은 노트북 파일당 한 번만 실행하면 됩니다. 보통 파일 맨 위의 임포트 셀에 함께 넣습니다.
%matplotlib inlineimport matplotlib.pyplot as pltimport matplotlibimport platformmatplotlib.rcParams['font.family'] = {'Windows': 'Malgun Gothic', 'Darwin': 'AppleGothic'}.get(platform.system(), 'NanumGothic') # Windows# matplotlib.rcParams['font.family'] = 'NanumGothic' # macOS/Linuxmatplotlib.rcParams['axes.unicode_minus'] = False
이 네 줄을 모든 분석 노트북의 첫 셀에 넣는 것을 권장합니다.
%matplotlib widget (인터랙티브 모드)
그래프를 마우스로 확대/이동하고 싶을 때는 widget 모드를 사용합니다.
%matplotlib widgetimport matplotlib.pyplot as pltplt.plot([1, 2, 3], [4, 5, 6])plt.show()
ipympl 패키지가 필요합니다.
pip install ipympl
plt.show()가 필요한가
Jupyter Notebook에서는 %matplotlib inline이 설정된 경우, 셀 마지막 표현식이 Figure 객체이면 자동으로 출력됩니다. 하지만 코드 명확성을 위해 plt.show()를 명시적으로 쓰는 것을 권장합니다.
한 셀에 여러 그래프 그리기
%matplotlib inline 모드에서 같은 셀 안에 plt.plot()을 여러 번 호출하면 하나의 그래프에 겹쳐서 그려집니다.
plt.plot([1, 2, 3], [4, 5, 6])plt.plot([1, 2, 3], [6, 5, 4])plt.show()
두 선이 같은 Axes에 그려집니다. 별개의 그래프를 원한다면 plt.figure()로 새 Figure를 만들거나, 셀을 분리합니다.
"그럼 저는 이제 %matplotlib inline이랑 rcParams 설정을 항상 맨 위에 넣으면 되는 거군요?"
"맞아요. 그게 표준 시작 코드예요. 앞으로 노트북 열 때마다 그 셀 복붙하면 됩니다."
지윤은 이 셀 블록을 Jupyter 스니펫으로 저장해두기로 했다. 처음 설정 한 번이 앞으로의 모든 작업을 편하게 만들어준다.