이번 포스트에서는 Tornado 웹 프레임워크를 활용하여 데이터 시각화 대시보드를 구현하는 방법을 알아보겠습니다. Tornado는 파이썬에서 비동기 웹 서버를 구축할 수 있는 강력한 도구로, 실시간 데이터 처리 및 빠른 응답 속도가 요구되는 웹 어플리케이션에 적합합니다.
대시보드 개발 준비하기
먼저, Tornado를 설치해야 합니다. 아래의 명령어를 사용하여 pip를 통해 설치할 수 있습니다.
$ pip install tornado
이제 대시보드를 개발하기 위한 기본적인 구조를 만들어 봅시다. 아래의 코드를 app.py 파일에 작성합니다.
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
위 코드는 Tornado의 기본적인 구조를 가진 웹 어플리케이션을 생성합니다. MainHandler는 “/ “URL에 대한 요청을 처리하고, index.html 파일을 렌더링하는 역할을 합니다.
데이터 시각화를 위한 라이브러리 추가하기
대시보드에 데이터를 시각화하기 위해 matplotlib 라이브러리를 설치해야 합니다. 아래의 명령어를 사용하여 matplotlib를 설치합니다.
$ pip install matplotlib
이제 대시보드에 사용할 데이터를 로드하고 그래프로 표현하는 코드를 작성해 봅시다. 아래의 코드를 app.py 파일에 추가합니다.
import matplotlib.pyplot as plt
import numpy as np
class MainHandler(tornado.web.RequestHandler):
def get(self):
# 데이터 로드
data = np.random.randn(100)
# 그래프 생성
plt.plot(data)
# 그래프 이미지를 base64 형식으로 변환하여 전송
image = get_image_as_base64()
self.render("index.html", image=image)
def get_image_as_base64():
# matplotlib 그래프 이미지를 base64 형식으로 변환하는 로직
# ... (생략)
app = make_app()
위 코드에서는 NumPy를 사용하여 랜덤한 데이터를 생성하고, matplotlib를 사용하여 그래프를 생성합니다. 그리고 get_image_as_base64 함수를 통해 생성된 그래프 이미지를 base64 형식으로 변환하고, index.html에 이미지를 전달합니다.
대시보드 디자인 및 시각화 추가
마지막으로, 대시보드의 디자인을 작성하고 시각화된 데이터를 표시하는 코드를 작성해 봅시다. index.html 파일을 생성하고 아래의 코드를 작성합니다.
<!DOCTYPE html>
<html>
<head>
<title>Data Visualization Dashboard</title>
<style>
/* 대시보드 디자인을 위한 CSS 작성 */
/* ... (생략) */
</style>
</head>
<body>
<h1>Data Visualization Dashboard</h1>
<img src="{{ image }}" alt="Data Visualization" width="500" height="300">
</body>
</html>
위 코드에서는 대시보드의 제목을 표시하는 h1 태그와 이미지를 표시하는 img 태그를 작성합니다. {{ image }}는 Tornado의 템플릿 엔진을 통해 서버에서 전달된 그래프 이미지를 출력하는 부분입니다.
실행 및 결과 확인하기
모든 코드 작성이 완료되었으면, 아래의 명령어를 사용하여 Tornado 서버를 실행합니다.
$ python app.py
서버가 정상적으로 실행되면 브라우저에서 http://localhost:8888 에 접속하여 대시보드를 확인할 수 있습니다. 랜덤한 데이터로 생성된 그래프가 화면에 표시되어야 합니다.
이제 여러분은 Tornado를 사용하여 데이터 시각화 대시보드를 구현하는 방법을 배웠습니다. 추가적인 기능이나 다양한 차트를 추가하여 더 복잡한 시각화 대시보드를 구현해보세요!