[python] Tornado를 이용한 데이터 시각화 대시보드 구현

이번 포스트에서는 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를 사용하여 데이터 시각화 대시보드를 구현하는 방법을 배웠습니다. 추가적인 기능이나 다양한 차트를 추가하여 더 복잡한 시각화 대시보드를 구현해보세요!