- Poko product에서 그래프에 사용되는 Font의 경로 수정
- 웹과 모바일 간의 그래프 크기 차이 조절
# 문제의 path
path = "/Users/ui-seok/Dev/poko/static/AppleGothic.ttf"
# 수정 path
path = "./static/AppleGothic.ttf"
web:
build: .
# command: python3 manage.py runserver 0.0.0.0:8000
command: gunicorn poko.wsgi:application --bind 0.0.0.0:8000
volumes:
- static_volume:/usr/src/app/static
- media_volume:/usr/src/app/media
Hello! Poko에 사용되는 그래프 모두 웹에서는 적당한 크기로 정상 반영 되고 있음

문제가 되는 모바일 환경에서의 그래프
원인:
해결
.container {
max-width: 1200px; /* 최대 너비를 조절하여 레이아웃을 확장 */
margin: auto;
}
<div class="container mt-4">
<div class="row">
<img src="{{ poko_image }}" alt="POKO" width="" height="300" class="resized-image">
<div class="row">
<div class="container mt-4">
container: 이 클래스는 Bootstrap 프레임워크에서 주로 사용되며, 컨테이너 요소를 정의한다. Bootstrap의 컨테이너는 페이지의 콘텐츠를 중앙으로 정렬하고, 여백을 추가하여 깔끔한 디자인을 제공한다.
mt-4: 이 클래스는 Bootstrap에서 제공하는 마진(top)을 추가하는 클래스입니다. mt-4는 위쪽 마진을 1.5rem 만큼 추가한다.
<div class="row">
row: 이 클래스는 Bootstrap 프레임워크에서 주로 사용되며, 그리드 시스템의 행을 정의한다. row 클래스를 사용하면 그리드 시스템의 열(col)을 안에 넣을 수 있다. 그리드 시스템은 웹 페이지의 레이아웃을 구성하는 데 사용되며, 이를 통해 웹 페이지를 여러 컬럼으로 나누고 반응형 디자인을 쉽게 구현할 수 있다.
다른 해결방법 그래프가 svg임을 이용해 views에서 크기를 조절하는 방법도 있었음.
# views.py
# 그래프를 SVG 문자열로 저장
imgdata = StringIO()
plt.savefig(imgdata, format="svg")
imgdata.seek(0)
svg_bytes = imgdata.getvalue() # svg 그래프 크기 조절을 위해 추가 됨
# SVG 문자열을 가져와서 전달
graph = imgdata.getvalue()
# graph = imgdata.getvalue()
graph = f'<div style="width: 70%; margin: 0 auto;">{svg_bytes}</div>'
SVG(Scalable Vector Graphics)는 웹에서 벡터 그래픽을 표현하기 위한 XML 기반의 포맷. SVG는 그래픽을 정의하는 방법으로, 크기가 조절되어도 그래픽의 품질이 손상되지 않는다.이는 이미지를 확대하거나 축소할 때 깨지지 않고 선명하게 유지되는 것을 의미.
Matplotlib에서 그래프를 SVG 형식으로 저장하는 이유
Matplotlib에서 그래프를 SVG 형식으로 저장하면, 해당 SVG 문자열을 HTML 템플릿에 삽입하여 웹 페이지에서 그래프를 표시할 수 있다.
<svg> 태그를 사용하여 SVG 그래픽을 정의하고, 이를 템플릿에 삽입.
graph =
f'<div style="width: 70%; margin: 0 auto;">
<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg">
{svg_graph}</svg>
</div>'