Plotly তে Real-time Data Stream এবং Plot Update Techniques ব্যবহার করে আপনি ডেটা আপডেট হওয়া সাপেক্ষে গ্রাফের ভিজুয়ালাইজেশনকে রিয়েল টাইমে পরিবর্তন করতে পারেন। এটি বিশেষত তখন উপকারী যখন আপনার ডেটা লাইভ আপডেট হয়, যেমন IoT ডিভাইসের স্যাম্পলিং ডেটা, স্টক মার্কেট ডেটা, বা ওয়েব অ্যাপ্লিকেশনের মধ্যে লাইভ ডেটা ফিড।
Real-time Data Stream
Real-time Data Stream হল এমন একটি প্রক্রিয়া, যেখানে ডেটা ধারাবাহিকভাবে আসতে থাকে এবং এটি গ্রাফে রিয়েল টাইমে আপডেট হয়। Plotly তে real-time ডেটা স্ট্রিম করার জন্য আপনাকে Dash ফ্রেমওয়ার্ক ব্যবহার করতে হতে পারে, কারণ এটি ওয়েব অ্যাপ্লিকেশন তৈরি করতে এবং ডেটা স্ট্রিমিংয়ে সহজেই সহায়তা করে।
উদাহরণ: Real-time Data Stream with Plotly
import plotly.graph_objects as go
import numpy as np
import time
# এক্স এবং ওয়াই ডেটার জন্য কিছু ডিফল্ট ভ্যালু
x_vals = np.arange(0, 10, 0.1)
y_vals = np.sin(x_vals)
# প্লট তৈরি করা
fig = go.Figure(go.Scatter(x=x_vals, y=y_vals, mode='lines'))
# প্লট আপডেট করা
fig.update_layout(
title='Real-time Data Stream',
xaxis=dict(range=[0, 10]),
yaxis=dict(range=[-1.5, 1.5])
)
# একে আপডেট করার জন্য একটি লুপ
for i in range(10, 100): # 100 বার ডেটা আপডেট
new_x = np.arange(i, i + 10, 0.1)
new_y = np.sin(new_x)
fig.data[0].x = new_x
fig.data[0].y = new_y
fig.show()
time.sleep(1) # প্রতি সেকেন্ডে গ্রাফ আপডেট হবে
এখানে:
- প্রতিবার লুপে নতুন
xএবংyডেটা তৈরি হচ্ছে, যা গ্রাফে আপডেট হয়ে যাচ্ছে। time.sleep(1)ব্যবহার করা হয়েছে যাতে প্রতি সেকেন্ডে নতুন ডেটা আসে এবং গ্রাফ আপডেট হয়।
Plot Update Techniques
Plotly তে গ্রাফ আপডেট করার জন্য একাধিক পদ্ধতি রয়েছে, যাতে রিয়েল টাইমে ডেটা পরিবর্তন এবং গ্রাফের প্যাটার্ন অনুযায়ী ভিজুয়াল পরিবর্তন করা যায়। এই পদ্ধতিগুলি ওয়েবসাইট বা ড্যাশবোর্ডে গ্রাফের লাইভ আপডেট দেখাতে কার্যকর।
১. Partial Update with plotly.graph_objects
আপনি Plotly এর go.Figure() এর মাধ্যমে গ্রাফ আপডেট করতে পারেন, যেখানে শুধুমাত্র নির্দিষ্ট ডেটা পয়েন্ট বা প্যারামিটার আপডেট হবে।
import plotly.graph_objects as go
import numpy as np
import time
# প্রথম গ্রাফ তৈরি
x_vals = np.arange(0, 10, 0.1)
y_vals = np.sin(x_vals)
fig = go.Figure(go.Scatter(x=x_vals, y=y_vals, mode='lines'))
# গ্রাফের প্যারামিটার আপডেট
for i in range(10, 100):
new_x = np.arange(i, i + 10, 0.1)
new_y = np.sin(new_x)
fig.update_traces(x=new_x, y=new_y) # শুধুমাত্র ডেটা আপডেট করা
fig.show()
time.sleep(1)
এখানে:
update_traces(x=new_x, y=new_y)ব্যবহার করা হয়েছে, যাতে শুধুমাত্র গ্রাফের ডেটা আপডেট হয়, কিন্তু অন্যান্য প্যারামিটার অপরিবর্তিত থাকে।
২. Dynamic Updates with Dash
Dash Plotly এর একটি ফ্রেমওয়ার্ক, যা ড্যাশবোর্ড তৈরি এবং লাইভ ডেটা আপডেটের জন্য ব্যবহার করা হয়। Dash এ আপনি সহজেই লাইভ ডেটা স্ট্রিম করতে পারেন এবং Plotly গ্রাফের সাথে ইন্টারঅ্যাকশন করতে পারেন।
Dash এর মাধ্যমে Real-time Data Streaming
import dash
from dash import dcc, html
import plotly.graph_objs as go
import numpy as np
import time
app = dash.Dash()
# Initial plot data
x_vals = np.arange(0, 10, 0.1)
y_vals = np.sin(x_vals)
app.layout = html.Div([
dcc.Graph(id='live-update-graph'),
dcc.Interval(
id='interval-component',
interval=1*1000, # 1 সেকেন্ডে একবার
n_intervals=0
)
])
# গ্রাফ আপডেটের জন্য callback
@app.callback(
dash.dependencies.Output('live-update-graph', 'figure'),
[dash.dependencies.Input('interval-component', 'n_intervals')]
)
def update_graph_live(n):
x_vals = np.arange(n, n + 10, 0.1)
y_vals = np.sin(x_vals)
figure = {
'data': [go.Scatter(x=x_vals, y=y_vals, mode='lines')],
'layout': go.Layout(
title='Real-time Data Stream',
xaxis=dict(range=[n, n + 10]),
yaxis=dict(range=[-1.5, 1.5])
)
}
return figure
if __name__ == '__main__':
app.run_server(debug=True)
এখানে:
- Dash অ্যাপ্লিকেশন তৈরি করা হয়েছে, যেখানে
dcc.Intervalব্যবহার করে প্রতি সেকেন্ডে গ্রাফ আপডেট হবে। update_graph_live()ফাংশনটি প্রতি সেকেন্ডে কল হয় এবং নতুন ডেটা পাঠায়।
সারাংশ
Plotly তে Real-time Data Stream এবং Plot Update Techniques ব্যবহারের মাধ্যমে আপনি লাইভ ডেটা ভিজুয়ালাইজ করতে পারেন। Dash ফ্রেমওয়ার্কটি রিয়েল টাইম ডেটা স্ট্রিমিংয়ের জন্য একটি শক্তিশালী টুল, যেখানে সহজে লাইভ ডেটা আপডেট এবং ইন্টারেকটিভ গ্রাফ তৈরি করা যায়। Plotly তে update_traces() এবং go.Figure() এর মাধ্যমে আপনি পদ্ধতিগতভাবে গ্রাফের ডেটা আপডেট করতে পারেন, যা রিয়েল টাইম ডেটা এবং গ্রাফের ডাইনামিক আপডেটের জন্য কার্যকর।
Read more