SVG কি?
SVG (Scalable Vector Graphics) হলো একটি XML ভিত্তিক চিত্র ফরম্যাট যা গ্রাফিক্স, লোগো, চার্ট, ম্যাপ, এবং অন্যান্য ভিজ্যুয়াল কন্টেন্ট তৈরি করতে ব্যবহৃত হয়। SVG-এর প্রধান সুবিধা হলো এটি স্কেলেবল, মানে ছবি যত বড় বা ছোট হবে, ততই এর গুণমান থাকবে অপরিবর্তিত। এটি মূলত ভেক্টর গ্রাফিক্স ব্যবহার করে, তাই পিক্সেল বেসড গ্রাফিক্সের মতো ঝাপসা বা গুণমান হারানোর সমস্যা নেই।
D3.js-এ, SVG অত্যন্ত গুরুত্বপূর্ণ একটি উপাদান, কারণ D3.js ডেটা ভিজ্যুয়ালাইজেশন তৈরি করতে SVG ট্যাগ ব্যবহার করে। D3.js এর মাধ্যমে SVG এলিমেন্টে ডেটার ভিত্তিতে ডায়নামিক এবং ইন্টারঅ্যাকটিভ ভিজ্যুয়ালাইজেশন তৈরি করা যায়।
SVG এর বৈশিষ্ট্যসমূহ
- স্কেলেবল (Scalable): SVG গ্রাফিক্স স্কেল করা যায়, অর্থাৎ আপনি যেকোনো সাইজে জুম ইন বা আউট করতে পারেন এবং এতে গুণমান কমে না।
- এডিটেবল (Editable): SVG-এর সমস্ত উপাদান (যেমন, লাইন, রেকটেঙ্গেল, সার্কেল) কোড হিসেবে থাকে, যা সহজে জাভাস্ক্রিপ্ট বা CSS দিয়ে পরিবর্তন করা যায়।
- ইন্টারঅ্যাকটিভ (Interactive): SVG উপাদানগুলোর সাথে ইভেন্ট হ্যান্ডলিং (যেমন ক্লিক, হোভার) যোগ করা যেতে পারে, যা ইন্টারঅ্যাকটিভ ভিজ্যুয়ালাইজেশন তৈরিতে সাহায্য করে।
- কোড-বেজড (Code-based): SVG গুলি XML ফরম্যাটে লেখা হয়, যা HTML ডকুমেন্টে সহজেই এম্বেড করা যায়।
D3.js-এ SVG ব্যবহার
D3.js-এ SVG ব্যবহার করার মাধ্যমে ডেটা-ভিত্তিক ভিজ্যুয়ালাইজেশন তৈরি করা হয়। SVG ট্যাগ ব্যবহার করে আপনি বিভিন্ন গ্রাফিক্যাল উপাদান যেমন রেকটেঙ্গেল (rect), সার্কেল (circle), লাইন (line), পথ (path), ইত্যাদি তৈরি করতে পারেন। D3.js সেই উপাদানগুলোকে ডেটা বাইন্ডিং, সিলেকশন, এবং ম্যানিপুলেশন দ্বারা ডায়নামিকভাবে তৈরি, আপডেট এবং মুছে ফেলার ক্ষমতা প্রদান করে।
D3.js-এ SVG ব্যবহার করার প্রক্রিয়া
১. SVG এলিমেন্ট তৈরি করা
D3.js দিয়ে SVG তৈরি করতে প্রথমে d3.select() মেথড ব্যবহার করে একটি কন্টেইনার নির্বাচন করতে হয় (যেমন body বা অন্য কোনো div), তারপর সেখানে append("svg") মেথড ব্যবহার করে SVG এলিমেন্ট যোগ করা হয়।
উদাহরণ:
const svgWidth = 500;
const svgHeight = 400;
// SVG তৈরি
const svg = d3.select("body")
.append("svg")
.attr("width", svgWidth)
.attr("height", svgHeight);
এই কোডটি একটি SVG এলিমেন্ট তৈরি করবে যার প্রস্থ 500 পিক্সেল এবং উচ্চতা 400 পিক্সেল।
২. SVG উপাদান তৈরি করা
D3.js-এ SVG উপাদান তৈরি করতে append() মেথড ব্যবহার করা হয়। আপনি বিভিন্ন ধরনের SVG উপাদান তৈরি করতে পারেন, যেমন রেকটেঙ্গেল, সার্কেল, লাইন ইত্যাদি।
উদাহরণ:
- রেকটেঙ্গেল (Rect):
svg.append("rect")
.attr("x", 50)
.attr("y", 50)
.attr("width", 200)
.attr("height", 100)
.style("fill", "steelblue");
এটি একটি রেকটেঙ্গেল তৈরি করবে যেটি 50, 50 পিক্সেল স্থান থেকে শুরু হবে এবং এর প্রস্থ 200 পিক্সেল এবং উচ্চতা 100 পিক্সেল হবে।
- সার্কেল (Circle):
svg.append("circle")
.attr("cx", 150) // সেন্টারের x কোঅর্ডিনেট
.attr("cy", 150) // সেন্টারের y কোঅর্ডিনেট
.attr("r", 50) // রেডিয়াস
.style("fill", "orange");
এটি একটি সার্কেল তৈরি করবে যেটির কেন্দ্র (cx, cy) 150, 150 পিক্সেল এবং রেডিয়াস 50 পিক্সেল হবে।
- লাইন (Line):
svg.append("line")
.attr("x1", 50)
.attr("y1", 50)
.attr("x2", 450)
.attr("y2", 350)
.attr("stroke", "black")
.attr("stroke-width", 2);
এটি একটি লাইন তৈরি করবে যেটি 50, 50 থেকে 450, 350 পর্যন্ত যাবে এবং লাইনটি কালো রঙে হবে।
৩. ডেটা বাইন্ডিং এবং SVG
D3.js-এ ডেটা বাইন্ডিং ব্যবহারের মাধ্যমে আপনি ডেটার উপর ভিত্তি করে SVG উপাদানগুলো তৈরি করতে পারেন। data() মেথড ব্যবহার করে ডেটা বাইন্ড করা হয় এবং enter() মেথড ব্যবহার করে নতুন DOM উপাদান তৈরি করা হয়।
উদাহরণ:
// ডেটাসেট
const data = [100, 200, 150, 250, 300];
// বার চার্ট তৈরি
svg.selectAll("rect")
.data(data)
.enter()
.append("rect")
.attr("x", (d, i) => i * 60)
.attr("y", d => svgHeight - d)
.attr("width", 50)
.attr("height", d => d)
.style("fill", "steelblue");
এটি একটি বার চার্ট তৈরি করবে যেখানে প্রতিটি বার ডেটার মান অনুযায়ী উচ্চতা পাবে এবং 60 পিক্সেল দূরত্বে অবস্থান করবে।
৪. SVG এ ট্রানজিশন
D3.js-এ SVG উপাদানগুলির মধ্যে ট্রানজিশন যোগ করা সম্ভব, যাতে গ্রাফিক্সের গতি, আকার এবং রঙ পরিবর্তন ডায়নামিকভাবে হতে পারে।
উদাহরণ:
svg.selectAll("rect")
.data(data)
.enter()
.append("rect")
.attr("x", (d, i) => i * 60)
.attr("y", d => svgHeight - d)
.attr("width", 50)
.attr("height", d => d)
.style("fill", "steelblue")
.transition()
.duration(1000)
.style("fill", "orange");
এটি বার চার্টে একটি ট্রানজিশন যোগ করবে, যেখানে প্রথমে সব বারের রঙ steelblue থাকবে এবং 1 সেকেন্ড পর তা পরিবর্তিত হয়ে orange হয়ে যাবে।
SVG (Scalable Vector Graphics) একটি অত্যন্ত শক্তিশালী এবং স্কেলযোগ্য গ্রাফিক্স ফরম্যাট যা D3.js ব্যবহার করে ডেটা ভিজ্যুয়ালাইজেশন তৈরি করার জন্য অত্যন্ত উপযোগী। D3.js-এ SVG ব্যবহার করে আপনি বিভিন্ন ধরনের ডাইনামিক এবং ইন্টারঅ্যাকটিভ ভিজ্যুয়ালাইজেশন তৈরি করতে পারেন, যেমন বার চার্ট, লাইন চার্ট, পাই চার্ট, ম্যাপ, ইত্যাদি। SVG-এর স্কেলযোগ্যতা, এডিটেবিলিটি এবং ইন্টারঅ্যাকটিভ ফিচারগুলো D3.js-কে অত্যন্ত শক্তিশালী করে তোলে।
Read more