Django와 matplotlib

Pywiki
Sam (토론 | 기여)님의 2023년 1월 18일 (수) 10:15 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 가기 검색하러 가기

1 개요

matplotlib 등에서 만든 이미지는 일반적으로 static 파일로 저장 후 보여주는 게 정석과 같다. 하지만.. 굳이 데이터로 남기지 않고 바로 보여주고 싶은 심보는 어찌하리오.

2 view.py

아래와 같은 방식으로 구성한다.

from io import BytesIO
import matplotlib.pyplot as plt
import base64
# 아래는 선택사항
import matplotlib.font_manager as fm  # 한글폰트를 사용하기 위해.
import seaborn as sns

# 그림그리기.
plt.figure(figsize=(10, 12))
sns.heatmap(df.corr(), linewidths=0.1, vmax=0.5, cmap=plt.cm.gist_heat, linecolor='white', annot=True)
buffer = BytesIO()
plt.savefig(buffer, format='png')
buffer.seek(0)
image_png = buffer.getvalue()
buffer.close()

graphic = base64.b64encode(image_png)
graphic = graphic.decode('utf-8')
context['graphic'] = graphic
return render(request, 'utility/data_analysis/correlation.html', context)

3 template

다음과 같이 작성한다.

<img src="data:image/png;base64,{{ graphic|safe }}">