Plotly তে Animated Plots তৈরি করা একটি চমৎকার উপায়, যা ডেটার পরিবর্তন বা ইভেন্টের গতিশীলতা প্রদর্শন করতে সহায়তা করে। Animation ব্যবহার করে, আপনি ডেটা পয়েন্টগুলো বা গ্রাফের অন্যান্য উপাদানগুলো সময়ের সাথে সাথে গতিশীলভাবে প্রদর্শন করতে পারেন। এটি বিশেষভাবে ব্যবহারী, যখন আপনি ডেটার ট্রেন্ড, পরিবর্তন বা ইভেন্টের অগ্রগতি দেখাতে চান।
এখানে, আমরা দেখবো কীভাবে Animated Plots তৈরি করা যায়, এবং কীভাবে এই এনিমেশনগুলি ডেটার একাধিক দিকের পরিবর্তন এবং অগ্রগতির সাথে যুক্ত করা যায়।
১. Basic Animation in Plotly (Animating Line Charts)
এখানে আমরা Line Chart এর একটি সাধারণ অ্যানিমেশন তৈরি করবো, যেখানে সময়ের সাথে ডেটার পরিবর্তন দেখানো হবে।
উদাহরণ: Basic Animated Line Chart
import plotly.graph_objects as go
import numpy as np
# ডেটা তৈরি
x = np.linspace(0, 10, 100)
y = np.sin(x)
# Animation এর জন্য Frames তৈরি করা
frames = [go.Frame(data=[go.Scatter(x=x[:k], y=y[:k], mode='lines')], name=str(k)) for k in range(1, 101)]
# Initial plot
fig = go.Figure(
data=[go.Scatter(x=x, y=y, mode='lines')],
layout=go.Layout(
title="Animated Line Chart",
updatemenus=[dict(
type='buttons',
showactive=False,
buttons=[dict(label="Play", method="animate", args=[None, dict(frame=dict(duration=50, redraw=True), fromcurrent=True)])]
)]
),
frames=frames
)
# গ্রাফ প্রদর্শন
fig.show()
এখানে:
- Frames: আমরা
framesতৈরি করেছি যেখানে প্রতি ফ্রেমেxএবংyডেটার কিছু অংশ প্রদর্শিত হবে। এটি আমাদের লাইনটি অ্যানিমেটেডভাবে প্রদর্শন করবে। - updatemenus: "Play" বাটন যোগ করা হয়েছে যাতে এনিমেশনটি প্লে করা যায়।
২. Animating Multiple Series
আপনি একাধিক ডেটা সিরিজের অ্যানিমেশনও তৈরি করতে পারেন। এখানে আমরা দুইটি ভিন্ন ট্রেন্ড (যেমন সাইন ও কসমাইন ফাংশন) অ্যানিমেটেডভাবে দেখাবো।
উদাহরণ: Animating Multiple Series
import plotly.graph_objects as go
import numpy as np
# ডেটা তৈরি
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# Animation এর জন্য Frames তৈরি করা
frames = [go.Frame(
data=[
go.Scatter(x=x[:k], y=y1[:k], mode='lines', name="sin(x)"),
go.Scatter(x=x[:k], y=y2[:k], mode='lines', name="cos(x)")
],
name=str(k)
) for k in range(1, 101)]
# Initial plot
fig = go.Figure(
data=[
go.Scatter(x=x, y=y1, mode='lines', name="sin(x)"),
go.Scatter(x=x, y=y2, mode='lines', name="cos(x)")
],
layout=go.Layout(
title="Animating Multiple Series",
updatemenus=[dict(
type='buttons',
showactive=False,
buttons=[dict(label="Play", method="animate", args=[None, dict(frame=dict(duration=50, redraw=True), fromcurrent=True)])]
)]
),
frames=frames
)
# গ্রাফ প্রদর্শন
fig.show()
এখানে:
- দুইটি ফাংশন (sin এবং cos) একসাথে অ্যানিমেট করা হয়েছে।
- frames তে দুটো সিরিজের ডেটা প্রদর্শিত হচ্ছে, এবং updatemenus দিয়ে "Play" বাটন যোগ করা হয়েছে।
৩. Animating a 3D Scatter Plot
Plotly তে 3D Scatter Plot এর অ্যানিমেশনও তৈরি করা সম্ভব। এটি ৩টি ভেরিয়েবলের মধ্যে সময়ের সাথে পরিবর্তন প্রদর্শন করতে ব্যবহৃত হয়।
উদাহরণ: 3D Animated Scatter Plot
import plotly.graph_objects as go
import numpy as np
# ডেটা তৈরি
t = np.linspace(0, 10, 100)
x = np.sin(t)
y = np.cos(t)
z = t
# Animation এর জন্য Frames তৈরি করা
frames = [go.Frame(data=[go.Scatter3d(x=x[:k], y=y[:k], z=z[:k], mode='markers', marker=dict(size=6))], name=str(k)) for k in range(1, 101)]
# Initial plot
fig = go.Figure(
data=[go.Scatter3d(x=x, y=y, z=z, mode='markers', marker=dict(size=6))],
layout=go.Layout(
title="3D Animated Scatter Plot",
scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
updatemenus=[dict(
type='buttons',
showactive=False,
buttons=[dict(label="Play", method="animate", args=[None, dict(frame=dict(duration=50, redraw=True), fromcurrent=True)])]
)]
),
frames=frames
)
# গ্রাফ প্রদর্শন
fig.show()
এখানে:
- ৩টি ভেরিয়েবলের মান (x, y, z) অ্যানিমেটেডভাবে দেখানো হচ্ছে।
- 3D Scatter Plot-এ
framesব্যবহার করা হয়েছে, যাতে প্রতিটি ফ্রেমে ডেটার কিছু অংশ দেখানো হয়।
৪. Animating Bar Chart
Bar Chart অ্যানিমেশনটি ব্যবহার করে আপনি সময়ের সাথে ডেটার পরিবর্তন বা ক্যাটেগরির বৃদ্ধি বা হ্রাস দেখাতে পারেন।
উদাহরণ: Animated Bar Chart
import plotly.graph_objects as go
import numpy as np
# ডেটা তৈরি
categories = ['A', 'B', 'C', 'D', 'E']
values = np.random.randint(1, 10, size=5)
# Animation এর জন্য Frames তৈরি করা
frames = [go.Frame(data=[go.Bar(x=categories, y=values * k)], name=str(k)) for k in range(1, 11)]
# Initial plot
fig = go.Figure(
data=[go.Bar(x=categories, y=values)],
layout=go.Layout(
title="Animated Bar Chart",
updatemenus=[dict(
type='buttons',
showactive=False,
buttons=[dict(label="Play", method="animate", args=[None, dict(frame=dict(duration=500, redraw=True), fromcurrent=True)])]
)]
),
frames=frames
)
# গ্রাফ প্রদর্শন
fig.show()
এখানে:
- ক্যাটেগরি অনুযায়ী Bar Chart অ্যানিমেটেড হয়েছে।
- প্রতি ফ্রেমে values গুলি বৃদ্ধি পাচ্ছে, যা গ্রাফের মধ্যে দেখা যাচ্ছে।
সারাংশ
Plotly তে Animated Plots তৈরি করা অত্যন্ত সহজ এবং তা ডেটার পরিবর্তন বা প্রবণতাগুলিকে জীবন্তভাবে উপস্থাপন করে। আপনি Line Charts, Scatter Plots, 3D Plots, এবং Bar Charts সহ বিভিন্ন ধরনের অ্যানিমেটেড গ্রাফ তৈরি করতে পারেন। Animation ব্যবহার করে ডেটা ভিজুয়ালাইজেশনের মাধ্যমে আপনি সময়ের সাথে ডেটার পরিবর্তন, সম্পর্ক এবং টেন্ডেন্সি আরও কার্যকরভাবে উপস্থাপন করতে পারবেন।
Read more