D3.js হল একটি শক্তিশালী জাভাস্ক্রিপ্ট লাইব্রেরি, যা ডেটাকে DOM (Document Object Model) এর সাথে যুক্ত করতে এবং ভিজ্যুয়ালাইজেশন তৈরি করতে ব্যবহৃত হয়। ডেটা পরিবর্তন এবং DOM ম্যানিপুলেশন এর মাধ্যমে আপনি আপনার ভিজ্যুয়ালাইজেশনকে ডাইনামিক এবং ইন্টারঅ্যাকটিভ করে তুলতে পারেন।
ডেটা পরিবর্তনের সময়, DOM (HTML বা SVG এলিমেন্টগুলোর) আছড়ে পড়া (update), যোগ করা (enter), এবং মুছে ফেলা (exit) হল গুরুত্বপূর্ণ মেথড। D3.js এই সমস্ত প্রক্রিয়া সহজ করে দেয় এবং ডেটার প্রতি প্রতিক্রিয়া জানিয়ে ভিজ্যুয়ালাইজেশনকে আপডেট করতে সাহায্য করে।
১. D3.js তে DOM ম্যানিপুলেশন কিভাবে কাজ করে
D3.js DOM ম্যানিপুলেশন প্রক্রিয়া মূলত ডেটা বাইন্ডিং (data binding) এর মাধ্যমে কাজ করে। ডেটা এবং DOM এলিমেন্টগুলোর মধ্যে সম্পর্ক স্থাপন করে D3.js এটি পরিচালনা করে। সাধারণত, enter(), update(), এবং exit() মেথডগুলি ব্যবহার করা হয় ডেটা পরিবর্তন এবং DOM ম্যানিপুলেশনের জন্য।
২. ডেটা বাইনডিং এবং DOM ম্যানিপুলেশন
১. Enter() মেথড
enter() মেথডটি নতুন ডেটার জন্য DOM এলিমেন্ট তৈরি করতে ব্যবহৃত হয়। এটি নতুন ডেটার সাথে সম্পর্কিত DOM এলিমেন্ট তৈরি করতে সাহায্য করে।
উদাহরণ: Enter() মেথড
// ডেটা সেট
const data = [30, 80, 45, 60, 20];
// SVG ক্যানভাস তৈরি
const svg = d3.select("body").append("svg")
.attr("width", 300)
.attr("height", 200);
// ডেটা বাইন্ডিং এবং ডম এলিমেন্ট তৈরি
svg.selectAll("circle")
.data(data)
.enter().append("circle")
.attr("cx", (d, i) => (i + 1) * 60)
.attr("cy", 100)
.attr("r", d => d)
.attr("fill", "teal");
ব্যাখ্যা:
- enter() মেথডের মাধ্যমে নতুন ডেটার জন্য circle এলিমেন্ট তৈরি করা হয়েছে।
- এখানে প্রতিটি circle এর ব্যাসার্ধ
d(ডেটার মান) এর উপর ভিত্তি করে নির্ধারণ করা হয়েছে।
২. Update() মেথড
update() মেথডটি DOM এলিমেন্টগুলির আপডেট করতে ব্যবহৃত হয়, যখন ডেটা পরিবর্তন হয়। যখন ডেটা পরিবর্তিত হয়, তখন D3.js পুরানো DOM এলিমেন্টগুলিকে নতুন ডেটার সাথে আপডেট করে।
উদাহরণ: Update() মেথড
// নতুন ডেটা
const newData = [50, 40, 60, 90, 30];
// SVG ক্যানভাস
const svg = d3.select("svg");
// ডেটা বাইন্ডিং এবং আপডেট
svg.selectAll("circle")
.data(newData)
.attr("cx", (d, i) => (i + 1) * 60)
.attr("cy", 100)
.attr("r", d => d)
.attr("fill", "steelblue");
ব্যাখ্যা:
- update() মেথডটি circle এলিমেন্টগুলির আকার এবং অবস্থান আপডেট করেছে, যাতে এটি নতুন ডেটার সাথে সামঞ্জস্যপূর্ণ হয়।
৩. Exit() মেথড
exit() মেথডটি সেই DOM এলিমেন্টগুলো সরাতে ব্যবহৃত হয়, যেগুলোর সাথে আর ডেটা নেই। যখন ডেটা থেকে কোনো এলিমেন্ট মুছে যায়, তখন exit() মেথড সেই DOM এলিমেন্টগুলিকে মুছে ফেলে।
উদাহরণ: Exit() মেথড
// পুরানো ডেটা
const oldData = [30, 80, 45];
// নতুন ডেটা
const updatedData = [50, 40, 60, 90, 30];
// SVG ক্যানভাস
const svg = d3.select("svg");
// ডেটা বাইন্ডিং, আপডেট এবং এক্সিট
svg.selectAll("circle")
.data(updatedData)
.enter().append("circle")
.attr("cx", (d, i) => (i + 1) * 60)
.attr("cy", 100)
.attr("r", d => d)
.attr("fill", "teal");
svg.selectAll("circle")
.data(updatedData)
.exit().remove();
ব্যাখ্যা:
- exit() মেথডটি পুরানো ডেটার জন্য যুক্ত DOM এলিমেন্টগুলো মুছে ফেলেছে, যেখানে ডেটা আর উপস্থিত ছিল না।
৩. ডেটা পরিবর্তন এবং DOM ম্যানিপুলেশন একত্রে ব্যবহার
ডেটা পরিবর্তনের জন্য enter(), update(), এবং exit() মেথডগুলি একত্রে ব্যবহৃত হয়। এটি ডেটার সাথে DOM এলিমেন্টগুলির পুরো প্রক্রিয়া ম্যানেজ করার জন্য ব্যবহৃত হয়।
উদাহরণ: Enter(), Update(), এবং Exit() একত্রে
// প্রাথমিক ডেটা
const initialData = [30, 80, 45, 60];
// নতুন ডেটা
const newData = [50, 40, 90, 30, 70];
// SVG ক্যানভাস
const svg = d3.select("svg");
// ডেটা বাইন্ডিং এবং DOM আপডেট
const circles = svg.selectAll("circle")
.data(newData);
// নতুন ডেটার জন্য এলিমেন্ট যোগ করা
circles.enter().append("circle")
.attr("cx", (d, i) => (i + 1) * 60)
.attr("cy", 100)
.attr("r", d => d)
.attr("fill", "steelblue");
// পুরানো ডেটার জন্য এলিমেন্ট আপডেট করা
circles.attr("cx", (d, i) => (i + 1) * 60)
.attr("cy", 100)
.attr("r", d => d)
.attr("fill", "teal");
// ডেটা না থাকা এলিমেন্টগুলো সরানো
circles.exit().remove();
ব্যাখ্যা:
- enter(): নতুন ডেটার জন্য circle এলিমেন্ট তৈরি করা।
- update(): পুরানো ডেটার জন্য এলিমেন্ট আপডেট করা।
- exit(): ডেটা থেকে মুছে যাওয়া এলিমেন্টগুলো মুছে ফেলা।
৪. DOM ম্যানিপুলেশনে ডেটার প্রভাব
D3.js এর মাধ্যমে ডেটা পরিবর্তন করলে, DOM অটোমেটিকভাবে আপডেট হয় এবং ভিজ্যুয়ালাইজেশন পরিবর্তিত ডেটার সাথে সঠিকভাবে সিঙ্ক্রোনাইজ হয়। এটি ডেটার পরিবর্তনের সাথে সাথে সারা স্ক্রীনে ইন্টারঅ্যাকটিভ রেন্ডারিং নিশ্চিত করে।
ডেটা পরিবর্তন এবং DOM ম্যানিপুলেশন হল D3.js এর মূল বৈশিষ্ট্য। enter(), update(), এবং exit() মেথডগুলি ব্যবহার করে ডেটা এবং DOM এলিমেন্টগুলির মধ্যে সম্পর্ক স্থাপন করা এবং সেই অনুযায়ী ভিজ্যুয়ালাইজেশনটি পরিবর্তন করা যায়। D3.js এর এই ক্ষমতা ডেটা স্ন্যাপশট এবং ভিজ্যুয়াল কন্ট্রোল তৈরি করার ক্ষেত্রে অত্যন্ত গুরুত্বপূর্ণ, যা ইন্টারঅ্যাকটিভ এবং ডাইনামিক ভিজ্যুয়ালাইজেশন নিশ্চিত করে।
Read more