Dash ব্যবহার করে Real-time Plotly Visualization তৈরি করা যায় যা ডেটা পরিবর্তনের সাথে সাথে স্বয়ংক্রিয়ভাবে আপডেট হয়। এটি বিশেষ করে এমন পরিস্থিতিতে কাজে আসে যেখানে ডেটা ধারাবাহিকভাবে পরিবর্তিত হয়, যেমন স্টক মার্কেটের ডেটা, সেন্সর ডেটা, বা সার্ভার মনিটরিং ডেটা।
Dash এর মাধ্যমে আপনি real-time data streaming এর জন্য ইন্টারেক্টিভ Plotly graphs তৈরি করতে পারেন। এই ধরনের ড্যাশবোর্ড ব্যবহারকারীকে লাইভ ডেটা ভিজ্যুয়ালাইজেশন দেখাতে সক্ষম করে, যা ক্রমাগত পরিবর্তন এবং আপডেট হয়।
এখানে দেখানো হবে কিভাবে Dash ও Plotly ব্যবহার করে real-time data visualization তৈরি করা যায়।
Dash Real-time Plotly Visualization এর মূল উপাদান
- Interval Component: Dash তে
dcc.Intervalব্যবহার করে নির্দিষ্ট সময় পর পর ডেটা আপডেট করা হয়। - Plotly Graphs: Dash এর গ্রাফ কম্পোনেন্টের মাধ্যমে লাইভ ডেটার ভিজুয়ালাইজেশন তৈরি করা হয়।
- Callbacks: Callbacks এর মাধ্যমে ইউজারের ইন্টারঅ্যাকশন অনুযায়ী গ্রাফ আপডেট করা হয়, যেমন ডেটা পরিবর্তন হলে গ্রাফের নতুন মান প্রদর্শন করা।
Real-time Plotly Visualization তৈরি করা
এখানে আমরা একটি সাধারণ উদাহরণ দেখবো যেখানে একটি সাইন ওয়েভ ডেটা লাইভভাবে আপডেট হবে Dash অ্যাপ্লিকেশন ব্যবহার করে। dcc.Interval কম্পোনেন্ট ব্যবহার করে প্রতি ১ সেকেন্ডে গ্রাফ আপডেট হবে।
উদাহরণ: Real-time Plotly Graph with Dash
import dash
from dash import dcc, html
from dash.dependencies import Input, Output
import plotly.graph_objs as go
import numpy as np
# Dash অ্যাপ্লিকেশন তৈরি করা
app = dash.Dash(__name__)
# অ্যাপ্লিকেশনের লেআউট
app.layout = html.Div([
html.H1("Real-time Plotly Visualization with Dash"),
# Plotly Graph
dcc.Graph(id='live-graph'),
# Interval কম্পোনেন্ট (ডেটা আপডেট করার জন্য)
dcc.Interval(
id='graph-update', # Interval কম্পোনেন্টের আইডি
interval=1*1000, # 1 সেকেন্ডে একবার ডেটা আপডেট হবে
n_intervals=0 # শুরুতে 0
)
])
# Callback function - লাইভ গ্রাফ আপডেট হবে
@app.callback(
Output('live-graph', 'figure'),
[Input('graph-update', 'n_intervals')]
)
def update_graph(n):
# সাইন ওয়েভ ডেটা তৈরি
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x + 0.1 * n) # প্রতি সেকেন্ডে সাইন ওয়েভে পরিবর্তন আসবে
# Plotly গ্রাফ তৈরি
figure = {
'data': [
go.Scatter(
x=x,
y=y,
mode='lines',
name='Sine Wave'
)
],
'layout': go.Layout(
title="Real-time Sine Wave",
xaxis=dict(title='X'),
yaxis=dict(title='Y'),
showlegend=True
)
}
return figure
# সার্ভার চালানো
if __name__ == '__main__':
app.run_server(debug=True)
ব্যাখ্যা:
dcc.Interval:- এটি একটি Dash কম্পোনেন্ট যা প্রতি নির্দিষ্ট সময় অন্তর (এখানে 1 সেকেন্ড) এক্সিকিউট হয়।
interval=1*1000মানে প্রতি ১ সেকেন্ড পর পর এই কম্পোনেন্ট চালু হবে।
- Callback:
update_graphফাংশনটি প্রতি ১ সেকেন্ডে কল হবে এবং নতুন সাইন ওয়েভ ডেটা তৈরি করে গ্রাফ আপডেট করবে।n_intervalsইনপুট হিসেবে আসে, যা এই ফাংশনকে জানায় কতবার ইন্টারভাল চলেছে এবং সাইন ওয়েভের ডেটা আপডেট করবে।
- Plotly Graph:
- সাইন ওয়েভের ডেটা প্রতি সেকেন্ডে পরিবর্তিত হবে এবং সেই অনুযায়ী Plotly Scatter plot লাইভ আপডেট হবে।
- Real-time Visualization:
- এটি একটি real-time sine wave graph তৈরি করবে যা প্রতি সেকেন্ডে আপডেট হবে।
Real-time Data Visualization with Random Data
এখানে আমরা একটি Random Data গ্রাফ দেখাবো যা প্রতি ১ সেকেন্ডে র্যান্ডম ডেটার মাধ্যমে আপডেট হবে।
উদাহরণ: Real-time Random Data Graph with Dash
import dash
from dash import dcc, html
from dash.dependencies import Input, Output
import plotly.graph_objs as go
import random
# Dash অ্যাপ্লিকেশন তৈরি করা
app = dash.Dash(__name__)
# অ্যাপ্লিকেশনের লেআউট
app.layout = html.Div([
html.H1("Real-time Random Data Visualization with Dash"),
# Plotly Graph
dcc.Graph(id='live-graph'),
# Interval কম্পোনেন্ট (ডেটা আপডেট করার জন্য)
dcc.Interval(
id='graph-update',
interval=1*1000, # 1 সেকেন্ডে একবার ডেটা আপডেট হবে
n_intervals=0
)
])
# Callback function - লাইভ গ্রাফ আপডেট হবে
@app.callback(
Output('live-graph', 'figure'),
[Input('graph-update', 'n_intervals')]
)
def update_graph(n):
# র্যান্ডম ডেটা তৈরি
x = list(range(10))
y = [random.randint(1, 100) for _ in range(10)] # র্যান্ডম ডেটা
# Plotly গ্রাফ তৈরি
figure = {
'data': [
go.Bar(
x=x,
y=y,
name='Random Data'
)
],
'layout': go.Layout(
title="Real-time Random Data",
xaxis=dict(title='X'),
yaxis=dict(title='Y'),
showlegend=True
)
}
return figure
# সার্ভার চালানো
if __name__ == '__main__':
app.run_server(debug=True)
ব্যাখ্যা:
- Random Data Generation:
y = [random.randint(1, 100) for _ in range(10)]লাইনে প্রতি সেকেন্ডে র্যান্ডম ডেটা তৈরি করা হচ্ছে।
- Bar Chart:
go.Barব্যবহার করে Bar Chart তৈরি করা হয়েছে যা প্রতি সেকেন্ডে নতুন র্যান্ডম ডেটা দেখাবে।
- Real-time Graph:
dcc.Intervalকম্পোনেন্টের মাধ্যমে প্রতি ১ সেকেন্ডে র্যান্ডম ডেটার গ্রাফ আপডেট হবে।
সারাংশ
Dash এবং Plotly দিয়ে Real-time Data Visualization তৈরি করার জন্য dcc.Interval কম্পোনেন্ট ব্যবহৃত হয় যা নির্দিষ্ট সময় পর পর গ্রাফ আপডেট করে। এটি বিশেষ করে লাইভ ডেটা ভিজুয়ালাইজেশন তৈরি করতে ব্যবহৃত হয়, যেমন স্টক মার্কেট, সেন্সর ডেটা বা সার্ভার স্ট্যাটাস। Dash অ্যাপ্লিকেশনে Callback ফাংশনের মাধ্যমে ডেটা এবং গ্রাফের মধ্যে ইন্টারঅ্যাকশন সুনির্দিষ্টভাবে নিয়ন্ত্রণ করা যায় এবং সেই অনুযায়ী গ্রাফ আপডেট হয়।
Read more