[파이썬] web2py에서의 데이터 시각화

데이터 시각화는 데이터 분석 및 표현을 위해 그래픽으로 데이터를 시각적으로 표현하는 프로세스입니다. web2py는 파이썬 기반의 웹 프레임워크로, 데이터 시각화를 위한 다양한 도구와 라이브러리를 제공합니다. 이 블로그 포스트에서는 web2py에서 데이터 시각화를 위한 주요 도구와 예제 코드를 소개하고자 합니다.

Matplotlib

Matplotlib은 파이썬에서 가장 널리 사용되는 데이터 시각화 라이브러리입니다. web2py에서도 Matplotlib을 사용하여 다양한 그래프와 차트를 생성할 수 있습니다. 예를 들어, 다음은 web2py에서 Matplotlib을 사용하여 선 그래프를 그리는 예제 코드입니다.

import matplotlib.pyplot as plt

def index():
    data = [1, 3, 5, 7, 9]
    plt.plot(data)
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.title('Line Plot')
    plt.grid(True)
    plt.show()
    
    return dict()

이 코드는 index() 함수를 정의하고, data라는 리스트를 생성한 후 plt.plot() 함수를 사용하여 선 그래프를 그립니다. 그리고 plt.xlabel()plt.ylabel()를 사용하여 x축과 y축의 레이블을 지정하고, plt.title()로 그래프의 제목을 설정합니다. plt.grid(True)는 그래프에 격자를 추가하고, plt.show()로 그래프를 표시합니다.

Plotly

Plotly는 인터랙티브한 데이터 시각화를 위한 도구로, web2py에서도 사용할 수 있습니다. Plotly를 사용하면 사용자가 그래프와 차트를 상호작용하며 탐색할 수 있습니다. 예를 들어, 다음은 web2py에서 Plotly를 사용하여 막대 그래프를 그리는 예제 코드입니다.

import plotly.graph_objs as go

def index():
    data = [go.Bar(
        x=['A', 'B', 'C', 'D'],
        y=[10, 20, 30, 40]
    )]
    
    layout = go.Layout(
        title='Bar Chart',
        xaxis=dict(title='Categories'),
        yaxis=dict(title='Values'),
        barmode='group'
    )
    
    fig = go.Figure(data=data, layout=layout)
    
    return dict(plot=fig.to_json())

이 코드는 index() 함수에서 data 변수에 막대 그래프를 생성하는데 필요한 데이터를 설정합니다. x 리스트에는 카테고리의 이름을, y 리스트에는 해당 카테고리의 값들을 설정합니다. 그리고 layout 변수를 사용하여 그래프의 제목, x축과 y축의 레이블, 그리고 막대 그래프의 형태를 설정합니다. 최종적으로 go.Figure() 함수를 사용하여 그래프 객체를 생성한 후 fig.to_json()으로 JSON 형식으로 변환하여 반환합니다.

Bokeh

Bokeh는 파이썬에서 인터랙티브한 시각화를 위해 사용되는 라이브러리입니다. web2py에서도 Bokeh를 사용하여 다양한 시각화를 구현할 수 있습니다. 예를 들어, 다음은 web2py에서 Bokeh를 사용하여 산점도를 그리는 예제 코드입니다.

from bokeh.plotting import figure, show
from bokeh.embed import json_item
from bokeh.models import ColumnDataSource

def index():
    data = {
        'x': [1, 2, 3, 4, 5],
        'y': [5, 4, 3, 2, 1]
    }
    
    source = ColumnDataSource(data=data)
    
    p = figure(title='Scatter Plot', x_axis_label='X', y_axis_label='Y')
    p.circle('x', 'y', source=source, size=10, color='blue')
    
    return dict(plot=json_item(p, "scatter_plot"))

이 코드는 index() 함수에서 data 딕셔너리를 생성하고, source 변수를 사용하여 데이터를 ColumnDataSource 형식으로 변환합니다. 그리고 figure() 함수를 사용하여 그래프 객체를 생성하고, p.circle() 함수로 산점도를 그립니다. 마지막으로 json_item() 함수를 사용하여 그래프 객체를 JSON 형식으로 변환하여 반환합니다.

위에서 살펴본 예제 코드는 각각 Matplotlib, Plotly, Bokeh를 사용하여 데이터 시각화를 구현하는 방법을 보여줍니다. web2py에서는 이 외에도 다양한 데이터 시각화 도구와 라이브러리를 지원하므로, 프로젝트의 요구사항에 맞게 선택하여 활용할 수 있습니다.