[python] 파이썬 Dash로 실시간 데이터를 갱신하는 방법은 무엇인가요?
파이썬의 Dash는 대화형 웹 애플리케이션을 만들 수 있는 훌륭한 도구입니다. 실시간으로 데이터를 갱신하려면 몇 가지 방법이 있습니다.
방법 1: 콜백을 사용하여 실시간으로 데이터 업데이트
Dash 애플리케이션에서는 콜백(callback)을 사용하여 특정 이벤트(예: 시간 간격 또는 사용자 입력)에 대한 반응으로 데이터를 업데이트할 수 있습니다. 예를 들어, dcc.Interval
을 사용하여 일정한 시간 간격으로 데이터를 업데이트할 수 있습니다.
import dash
from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html
import plotly.express as px
import random
import datetime
import pandas as pd
# 샘플 데이터 생성
df = pd.DataFrame({
"time": [datetime.datetime.now() + datetime.timedelta(minutes=i) for i in range(10)],
"value": [random.randint(1, 100) for _ in range(10)]
})
app = dash.Dash(__name__)
app.layout = html.Div([
dcc.Graph(id="live-update-graph"),
dcc.Interval(
id='interval-component',
interval=1000, # 1초마다 업데이트
n_intervals=0
)
])
@app.callback(
Output('live-update-graph', 'figure'),
[Input('interval-component', 'n_intervals')]
)
def update_graph_live(n):
# 샘플 데이터 업데이트
df.loc[len(df)] = [datetime.datetime.now(), random.randint(1, 100)]
fig = px.line(df, x="time", y="value", title='실시간 데이터 갱신')
return fig
if __name__ == '__main__':
app.run_server(debug=True)
위의 예제는 1초마다 그래프가 업데이트되도록 하는 간단한 Dash 애플리케이션입니다.
방법 2: 웹소켓 사용
실시간 데이터 업데이트를 위해 Dash 외부에서 웹소켓을 사용하여 데이터를 전달할 수 있습니다. 이를 통해 데이터를 실시간으로 전송하고 애플리케이션을 업데이트할 수 있습니다.
이러한 방법을 사용하면 데이터가 변경될 때마다 애플리케이션에 자동으로 반영될 수 있습니다.
결론
Dash를 사용하면 여러 가지 방법으로 실시간으로 데이터를 갱신할 수 있습니다. 콜백을 사용하거나 웹소켓을 통해 데이터를 전달하는 방법 등 여러 가지 방법 중 적합한 방법을 선택하여 실시간 데이터 업데이트를 구현할 수 있습니다.