JFreeChart লাইব্রেরি শুধুমাত্র সাধারণ চার্ট যেমন Bar Chart, Line Chart, এবং Pie Chart তৈরি করার জন্য ব্যবহৃত হয় না, বরং এটি আরও উন্নত চার্ট টাইপ সাপোর্ট করে যা ডেটার ভিজুয়ালাইজেশনকে আরও গভীর এবং বিস্তারিতভাবে উপস্থাপন করতে সহায়ক। এই টিউটোরিয়ালে JFreeChart-এ কিছু Advanced Chart Types নিয়ে আলোচনা করা হবে, যেমন Time Series Chart, XY Plot, Gantt Chart, Bubble Chart, এবং Ring Chart।
১. Time Series Chart (টাইম সিরিজ চার্ট)
Time Series Chart হলো ডেটার মধ্যে সময়ের পরিবর্তন প্রদর্শনের জন্য ব্যবহৃত একটি বিশেষ ধরনের চার্ট। এটি TimeSeries ক্লাসের মাধ্যমে তৈরি করা হয় এবং সাধারণত স্টক মার্কেট, ওয়েদার ডেটা, বা অন্যান্য টাইম-বেসড ডেটা ভিজুয়ালাইজেশনে ব্যবহৃত হয়।
উদাহরণ: Time Series Chart তৈরি করা
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import javax.swing.*;
public class TimeSeriesChartExample {
public static void main(String[] args) {
// TimeSeries তৈরি করা
TimeSeries series = new TimeSeries("Temperature");
series.add(new Second(10, 10, 3, 12, 2024), 10); // 10°C at 12:03
series.add(new Second(20, 10, 3, 12, 2024), 12); // 12°C at 12:04
// TimeSeriesCollection তৈরি করা
TimeSeriesCollection dataset = new TimeSeriesCollection(series);
// Time Series Chart তৈরি
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"Temperature Over Time", // Title
"Time", // X-Axis label
"Temperature (°C)", // Y-Axis label
dataset, // Dataset
true, // Show legend
true, // Show tooltips
false // No URLs
);
// ChartPanel তৈরি এবং JFrame এ চার্ট প্রদর্শন
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এই কোডটি একটি Time Series Chart তৈরি করবে, যেখানে সময়ের সাথে তাপমাত্রার পরিবর্তন প্রদর্শিত হবে।
২. XY Plot (XY প্লট)
XY Plot হলো একটি জনপ্রিয় চার্ট টাইপ যা ডেটার মধ্যে সম্পর্ক বা ট্রেন্ড প্রদর্শন করতে ব্যবহৃত হয়। এটি সাধারনত XYDataset বা XYSeries এর মাধ্যমে তৈরি হয়। Scatter Plot ও Line Chart এই ধরনের প্লটে অন্তর্ভুক্ত।
উদাহরণ: XY Plot তৈরি করা
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
public class XYPlotExample {
public static void main(String[] args) {
// XYSeries তৈরি করা
XYSeries series = new XYSeries("Speed");
series.add(1, 20);
series.add(2, 30);
series.add(3, 40);
series.add(4, 50);
// XYSeriesCollection তৈরি করা
XYSeriesCollection dataset = new XYSeriesCollection(series);
// XY Plot তৈরি
JFreeChart chart = ChartFactory.createXYLineChart(
"Speed vs Time", // Title
"Time", // X-Axis label
"Speed", // Y-Axis label
dataset, // Dataset
org.jfree.chart.plot.PlotOrientation.VERTICAL,
true, // Show legend
true, // Show tooltips
false // No URLs
);
// ChartPanel তৈরি এবং JFrame এ প্রদর্শন
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এই কোডটি একটি XY Plot তৈরি করবে, যেখানে Speed এবং Time এর মধ্যে সম্পর্ক দেখানো হবে।
৩. Gantt Chart (গান্ট চার্ট)
Gantt Chart সাধারণত প্রজেক্ট ম্যানেজমেন্টে ব্যবহৃত হয়, যেখানে একটি প্রজেক্টের বিভিন্ন কার্যক্রমের শুরু ও শেষ সময় দেখানো হয়। এটি সাধারণত JFreeChart এ কাস্টমাইজড প্লটের মাধ্যমে তৈরি করা হয়।
উদাহরণ: Gantt Chart তৈরি করা
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.gantt.Task;
import org.jfree.data.gantt.TaskSeries;
import org.jfree.data.gantt.TaskSeriesCollection;
import javax.swing.*;
public class GanttChartExample {
public static void main(String[] args) {
// TaskSeries তৈরি করা
TaskSeries series = new TaskSeries("Project Tasks");
Task task1 = new Task("Design", new org.jfree.date.DateUtilities().toDate("2024-12-01"), new org.jfree.date.DateUtilities().toDate("2024-12-05"));
Task task2 = new Task("Development", new org.jfree.date.DateUtilities().toDate("2024-12-06"), new org.jfree.date.DateUtilities().toDate("2024-12-10"));
series.add(task1);
series.add(task2);
// TaskSeriesCollection তৈরি করা
TaskSeriesCollection dataset = new TaskSeriesCollection(series);
// Gantt Chart তৈরি
JFreeChart chart = ChartFactory.createGanttChart(
"Project Timeline", // Title
"Task", // X-Axis label
"Timeline", // Y-Axis label
dataset, // Dataset
true, // Show legend
true, // Show tooltips
false // No URLs
);
// ChartPanel তৈরি এবং JFrame এ প্রদর্শন
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এই কোডটি একটি Gantt Chart তৈরি করবে, যেখানে Design এবং Development নামক কাজগুলোর শুরু এবং শেষ তারিখ দেখানো হবে।
৪. Bubble Chart (বাবল চার্ট)
Bubble Chart ডেটার মধ্যে তিনটি ভেরিয়েবলের সম্পর্ক প্রদর্শন করার জন্য ব্যবহৃত হয়, যেখানে প্রতিটি বুদ্বুদ (bubble) তিনটি তথ্যের প্রতিনিধিত্ব করে। X এবং Y এর সাথে প্রতিটি বুদ্বুদ একটি সাইজ এবং রঙ এর মাধ্যমে অতিরিক্ত তথ্য প্রদর্শন করে।
উদাহরণ: Bubble Chart তৈরি করা
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
public class BubbleChartExample {
public static void main(String[] args) {
// XYSeries তৈরি করা
XYSeries series = new XYSeries("Bubble Data");
series.add(1, 10, 5); // (X, Y, size)
series.add(2, 15, 10); // (X, Y, size)
series.add(3, 20, 15); // (X, Y, size)
// XYSeriesCollection তৈরি করা
XYSeriesCollection dataset = new XYSeriesCollection(series);
// Bubble Chart তৈরি
JFreeChart chart = ChartFactory.createBubbleChart(
"Bubble Chart Example", // Title
"X-Axis", // X-Axis label
"Y-Axis", // Y-Axis label
dataset, // Dataset
org.jfree.chart.plot.PlotOrientation.VERTICAL,
true, // Show legend
true, // Show tooltips
false // No URLs
);
// ChartPanel তৈরি এবং JFrame এ প্রদর্শন
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এই কোডটি একটি Bubble Chart তৈরি করবে, যেখানে X, Y, এবং Size তিনটি ভেরিয়েবলের সম্পর্ক দেখানো হবে।
৫. Ring Chart (রিং চার্ট)
Ring Chart হলো Pie Chart এর একটি বৈকল্পিক, যেখানে চার্টের কেন্দ্রটি খালি থাকে, এবং এটি Doughnut Chart নামেও পরিচিত।
উদাহরণ: Ring Chart তৈরি করা
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import javax.swing.*;
public class RingChartExample {
public static void main(String[] args) {
// DefaultPieDataset তৈরি করা
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("Java", 50);
dataset.setValue("Python", 30);
dataset.setValue("C++", 20);
// Ring Chart তৈরি (Doughnut Chart)
JFreeChart chart = ChartFactory.createRingChart(
"Programming Language Usage", // Title
dataset, // Dataset
true, // Show legend
true, // Show tooltips
false // No URLs
);
// ChartPanel তৈরি এবং JFrame এ প্রদর্শন
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এই কোডটি একটি Ring Chart তৈরি করবে, যা প্রোগ্রামিং ভাষাগুলির জনপ্রিয়তা প্রদর্শন করবে।
সারসংক্ষেপ
JFreeChart লাইব্রেরি একাধিক উন্নত চার্ট ধরনের সাপোর্ট করে যা ডেটাকে বিভিন্ন দৃষ্টিকোণ থেকে বিশ্লেষণ করতে সাহায্য করে। এর মধ্যে Time Series Chart, XY Plot, Gantt Chart, Bubble Chart, এবং Ring Chart অন্যতম। এই চার্টগুলি ডেটা ভিজুয়ালাইজেশনকে আরও শক্তিশালী এবং কার্যকরী করে তোলে, বিশেষ করে যখন ডেটার মধ্যে ট্রেন্ড, সম্পর্ক, বা সময়ের সাথে পরিবর্তন উপস্থাপন করতে হয়।
Gantt Chart হলো একটি টাইম-ভিত্তিক চার্ট যা সাধারণত প্রকল্প ব্যবস্থাপনা এবং শিডিউলিং এর জন্য ব্যবহৃত হয়। এটি বিভিন্ন কাজ বা কার্যক্রমের সময়সীমা (duration), নির্দিষ্ট সময়সূচী এবং সম্পর্ক (dependencies) প্রদর্শন করতে সাহায্য করে। JFreeChart লাইব্রেরি গ্যান্ট চার্ট তৈরি করতে JFreeChart এবং IntervalCategoryDataset ব্যবহার করে।
JFreeChart দিয়ে Gantt Chart তৈরি করার উদাহরণ
নিচে একটি Gantt Chart তৈরি করার জন্য কোড উদাহরণ দেয়া হয়েছে:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.data.gantt.Task;
import org.jfree.data.gantt.TaskSeries;
import org.jfree.data.gantt.TaskSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class GanttChartExample {
public static void main(String[] args) {
// Task Series তৈরি করা
TaskSeries series = new TaskSeries("Project Tasks");
// Task তৈরি করা
Task task1 = new Task("Task 1", new java.util.Date(2024, 1, 1), new java.util.Date(2024, 2, 1));
Task task2 = new Task("Task 2", new java.util.Date(2024, 2, 1), new java.util.Date(2024, 3, 1));
Task task3 = new Task("Task 3", new java.util.Date(2024, 3, 1), new java.util.Date(2024, 4, 1));
// Task Series এ Task যোগ করা
series.add(task1);
series.add(task2);
series.add(task3);
// TaskSeriesCollection তৈরি করা
TaskSeriesCollection dataset = new TaskSeriesCollection();
dataset.add(series);
// Gantt Chart তৈরি করা
JFreeChart chart = ChartFactory.createGanttChart(
"Project Gantt Chart", // Chart Title
"Task", // X-axis Label
"Date", // Y-axis Label
dataset, // Dataset
false, // Legend visibility
true, // Tooltips visibility
false // URLs visibility
);
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ Chart প্রদর্শন করা
JFrame frame = new JFrame("JFreeChart Gantt Chart Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(chartPanel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}
কোড ব্যাখ্যা
- Task Series:
এখানেTaskSeriesতৈরি করা হয়েছে, যা প্রকল্পের কাজের (tasks) তালিকা সংরক্ষণ করে। আমরা এই সিরিজে তিনটি Task যোগ করেছি। প্রতিটি টাস্কে কাজের নাম এবং সময়কাল (start date এবং end date) নির্ধারণ করা হয়েছে। - Task:
Taskহলো প্রতিটি নির্দিষ্ট কাজ বা কার্যক্রম, যার একটি নাম এবং একটি শুরুর ও শেষের তারিখ থাকে। উদাহরণস্বরূপ,"Task 1"নামক কাজটি ১ জানুয়ারি থেকে ১ ফেব্রুয়ারি পর্যন্ত চলবে। - TaskSeriesCollection:
একাধিকTaskSeriesযোগ করতে TaskSeriesCollection ব্যবহার করা হয়। এখানে আমরা একটি সিরিজ যোগ করেছি। - Gantt Chart:
ChartFactory.createGanttChart()মেথডটি একটি গ্যান্ট চার্ট তৈরি করে, যেখানে প্রথম প্যারামিটার হলো চার্টের শিরোনাম, দ্বিতীয় প্যারামিটার হলো X-axis label, তৃতীয় প্যারামিটার হলো Y-axis label, এবং চতুর্থ প্যারামিটার হলো আমাদের TaskSeriesCollection ডেটাসেট। - ChartPanel:
এই কম্পোনেন্টটি গ্যান্ট চার্টের জন্য একটি Swing প্যানেল তৈরি করে, যা GUI অ্যাপ্লিকেশন বা ডেস্কটপ অ্যাপ্লিকেশনে চার্ট দেখানোর জন্য ব্যবহৃত হয়।
Gantt Chart কাস্টমাইজেশন
Gantt Chart এর কিছু কাস্টমাইজেশন অপশন রয়েছে, যেমন:
Task Color পরিবর্তন: আপনি প্রতিটি টাস্কের রঙ পরিবর্তন করতে পারেন:
task1.setPaint(Color.RED); task2.setPaint(Color.GREEN); task3.setPaint(Color.BLUE);Task Dependency: Gantt Chart এ কাজগুলোর মধ্যে সম্পর্ক (dependencies) নির্ধারণ করা যায়, যেমন একটি কাজ শেষ হওয়ার পর অন্যটি শুরু হবে:
task2.addDependency(task1); // Task 2 depends on Task 1 task3.addDependency(task2); // Task 3 depends on Task 2Date Format কাস্টমাইজেশন: আপনি গ্যান্ট চার্টের তারিখের ফরম্যাট কাস্টমাইজ করতে পারেন:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");Gridlines: Gantt Chart এর gridlines কাস্টমাইজ করা যায়:
CategoryPlot plot = (CategoryPlot) chart.getPlot(); plot.setDomainGridlinesVisible(true); plot.setRangeGridlinesVisible(true);
উপসংহার
JFreeChart ব্যবহার করে Gantt Chart তৈরি করা অত্যন্ত সহজ এবং কার্যকরী। এটি প্রকল্প ব্যবস্থাপনা এবং কার্যক্রম শিডিউলিং জন্য একটি গুরুত্বপূর্ণ টুল, যা সময়সীমা এবং কার্যক্রমের সময়সূচী প্রদর্শনে সহায়ক। আপনি সহজেই টাস্ক যোগ করতে পারেন, তাদের নির্দিষ্ট সময়কাল নির্ধারণ করতে পারেন, এবং টাস্কের মধ্যে সম্পর্ক (dependencies) দেখাতে পারেন। JFreeChart এ Gantt Chart কাস্টমাইজ করার সুযোগও রয়েছে, যা আপনাকে আরও উন্নত এবং সুনির্দিষ্ট চার্ট তৈরি করতে সহায়তা করে।
JFreeChart লাইব্রেরি দিয়ে Polar Chart এবং Spider (Radar) Chart তৈরি করা সম্ভব, যা ডেটাকে রেডিয়াল বা স্পাইডার গ্রাফের আকারে প্রদর্শন করে। এই ধরনের চার্টগুলি সাধারণত একাধিক বৈশিষ্ট্য বা প্যারামিটার বিশ্লেষণ করতে ব্যবহৃত হয়, যেখানে একই সেন্ট্রাল পয়েন্ট থেকে বিভিন্ন ডেটা রেঞ্জকে প্রদর্শন করা হয়। সাধারণত প্যারামিটার কম্প্যারিজন বা মাল্টি-ডাইমেনশনাল ডেটা বিশ্লেষণের জন্য এই চার্টগুলি কার্যকরী।
Polar Chart এবং Spider (Radar) Chart এর সুবিধা
- Polar Chart বা Spider (Radar) Chart ব্যবহারের মাধ্যমে আপনি বিভিন্ন অ্যাঙ্গল বা দূরত্ব এর মধ্যে ডেটা উপস্থাপন করতে পারেন, যা বেশ উপকারী যখন আপনি বিভিন্ন ভেরিয়েবল এর মধ্যে সম্পর্ক বিশ্লেষণ করতে চান।
- এই চার্টগুলি প্রধানত প্রদর্শনীয় গ্রাফ হিসেবে ব্যবহৃত হয়, যেমন স্পোর্টস বা পারফরম্যান্স মেট্রিকস, যেখানে একাধিক বৈশিষ্ট্য একসাথে প্রদর্শিত হয়।
Polar Chart তৈরি করা
Polar Chart এমন একটি চার্ট যা কেন্দ্রিক ভিউ তে ডেটা প্রদর্শন করে, যেখানে ডেটা নির্দিষ্ট অ্যাঙ্গেল এবং রেডিয়াস এর মাধ্যমে চিত্রিত হয়।
Polar Chart উদাহরণ
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.SpiderWebPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
public class PolarChartExample {
public static void main(String[] args) {
// Dataset তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(4.0, "Series1", "Category1");
dataset.addValue(6.0, "Series1", "Category2");
dataset.addValue(8.0, "Series1", "Category3");
dataset.addValue(7.0, "Series1", "Category4");
// Polar Chart তৈরি করা
JFreeChart polarChart = ChartFactory.createPolarChart(
"Polar Chart Example", // চার্টের টাইটেল
dataset, // ডেটাসেট
true, // লেজেন্ড
true, // টুলটিপস
false // URL
);
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(polarChart);
chartPanel.setPreferredSize(new java.awt.Dimension(600, 600));
// JFrame এ চার্ট দেখানো
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এই কোডে:
- DefaultCategoryDataset ব্যবহার করে ডেটা সেট তৈরি করা হয়েছে, যেখানে প্রতিটি ক্যাটেগরির জন্য একটি ভ্যালু দেওয়া হয়েছে।
- ChartFactory.createPolarChart() মেথড ব্যবহার করে Polar Chart তৈরি করা হয়েছে, যেখানে Category1, Category2, Category3, এবং Category4 এর জন্য Series1 এর ভ্যালু দেওয়া হয়েছে।
Spider (Radar) Chart তৈরি করা
Spider Chart, যা Radar Chart হিসেবেও পরিচিত, হলো একটি গ্রাফিক্যাল উপস্থাপনা যেখানে একাধিক ভেরিয়েবল একই কেন্দ্র থেকে রেডিয়াল লাইনে প্রদর্শিত হয়। এটি বিভিন্ন ক্যাটেগরির মধ্যে পার্থক্য বা সম্পর্ক দেখানোর জন্য ব্যবহৃত হয়।
Spider Chart উদাহরণ
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.SpiderWebPlot;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
public class SpiderChartExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(8, "Series1", "Category1");
dataset.addValue(6, "Series1", "Category2");
dataset.addValue(7, "Series1", "Category3");
dataset.addValue(9, "Series1", "Category4");
// Spider (Radar) Chart তৈরি করা
JFreeChart spiderChart = ChartFactory.createSpiderWebChart(
"Spider Chart Example", // চার্টের টাইটেল
dataset, // ডেটাসেট
true, // লেজেন্ড
true, // টুলটিপস
false // URL
);
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(spiderChart);
chartPanel.setPreferredSize(new java.awt.Dimension(600, 600));
// JFrame এ চার্ট দেখানো
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এই কোডে:
- DefaultCategoryDataset ব্যবহার করে চারটি Category এর জন্য ডেটা তৈরি করা হয়েছে।
- ChartFactory.createSpiderWebChart() মেথড ব্যবহার করে Spider Chart তৈরি করা হয়েছে।
Polar এবং Spider Chart এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Polar Chart | Spider (Radar) Chart |
|---|---|---|
| প্রধান ব্যবহার | ডেটা রেডিয়াল ভাবে প্রদর্শন, সাধারণত ঘূর্ণনশীল ডেটা | একাধিক ক্যাটেগরির মধ্যে তুলনা এবং বিশ্লেষণ |
| প্রদর্শন | একটি বৃত্তের মধ্যে ডেটা, যেখানে বিভিন্ন রেডিয়াস এবং অ্যাঙ্গেল থাকে | একাধিক রেডিয়াল লাইনে ডেটা প্রদর্শন |
| ডেটার ধরনের উপস্থাপন | বিভিন্ন ভ্যালু রেডিয়াস এবং অ্যাঙ্গেলের মধ্যে সংস্থাপন | প্রতিটি ক্যাটেগরি একে অপরের থেকে স্পষ্টভাবে পৃথক থাকে |
| ব্যবহার ক্ষেত্র | টেম্পোরাল বা ঘূর্ণনশীল তথ্য প্রদর্শন | পারফরম্যান্স, বৈশিষ্ট্য তুলনা, বা বিশ্লেষণ |
সারসংক্ষেপ
Polar Chart এবং Spider (Radar) Chart দুটি JFreeChart এর শক্তিশালী ভিজুয়ালাইজেশন টুল, যা বিভিন্ন ভেরিয়েবল বা বৈশিষ্ট্য তুলনা এবং বিশ্লেষণ করার জন্য ব্যবহার করা হয়। Polar Chart সাধারণত কেন্দ্রিক ডেটা উপস্থাপনের জন্য ব্যবহৃত হয়, যেখানে Spider Chart একাধিক ক্যাটেগরির মধ্যে পার্থক্য প্রদর্শন করে। এই চার্টগুলি সাধারণত স্পোর্টস, পারফরম্যান্স মেট্রিকস, বা বিভিন্ন বৈশিষ্ট্য বিশ্লেষণের জন্য কার্যকর। JFreeChart দিয়ে এই ধরনের চার্ট তৈরি করে আপনি ডেটা ভিজুয়ালাইজেশনকে আরও ইন্টারঅ্যাকটিভ এবং অর্থপূর্ণ করতে পারবেন।
JFreeChart একটি শক্তিশালী লাইব্রেরি যা Java ডেভেলপারদের ডেটা ভিজুয়ালাইজেশনের জন্য বিভিন্ন ধরনের চার্ট তৈরি করতে সাহায্য করে। Waterfall Chart এবং Bubble Chart দুটি বিশেষ ধরনের চার্ট যা ডেটার ট্রেন্ড বা পার্থক্য প্রদর্শন করতে ব্যবহৃত হয়। এখানে আমরা JFreeChart ব্যবহার করে এই দুটি চার্ট কিভাবে তৈরি করা যায়, তা দেখব।
১. Waterfall Chart তৈরি করা
Waterfall Chart সাধারণত সিকোয়েন্স অনুসারে ডেটার পরিবর্তন বা পার্থক্য প্রদর্শন করতে ব্যবহৃত হয়। এটি একে অপরের উপর ভিত্তি করে বার বা কলামকে যুক্ত করে দেখায়। Waterfall Chart ব্যবসায়িক প্রেক্ষাপটে যেমন আয়-ব্যয়ের হিসাব বা কোনো সিরিজের বৃদ্ধি/হ্রাস দেখাতে ব্যবহৃত হয়।
JFreeChart সরাসরি Waterfall Chart তৈরি করার জন্য কোনো বিল্ট-ইন ফিচার প্রদান না করলেও, আমরা Bar Chart ব্যবহার করে এটি তৈরি করতে পারি, যেখানে বিশেষভাবে ধাপে ধাপে বার যোগ করে Waterfall Chart ইমিটেট করা হয়।
Waterfall Chart তৈরি করার উদাহরণ:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
public class WaterfallChartExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// বার যোগ করা (উল্লেখযোগ্য বৃদ্ধি এবং হ্রাস)
dataset.addValue(100, "Amount", "Start");
dataset.addValue(120, "Amount", "Increase 1");
dataset.addValue(100, "Amount", "Decrease 1");
dataset.addValue(150, "Amount", "Increase 2");
dataset.addValue(130, "Amount", "Decrease 2");
dataset.addValue(200, "Amount", "Final");
// Waterfall Chart তৈরি (Bar Chart স্টাইল)
JFreeChart chart = ChartFactory.createBarChart(
"Waterfall Chart Example", // চার্টের শিরোনাম
"Category", // X-Axis লেবেল
"Amount", // Y-Axis লেবেল
dataset, // ডেটাসেট
org.jfree.chart.plot.PlotOrientation.VERTICAL, // প্লট অরিয়েন্টেশন
true, // লেজেন্ড
true, // টুলটিপস
false // URL
);
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট দেখানো
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এখানে, DefaultCategoryDataset ব্যবহার করা হয়েছে এবং সিরিজের মধ্যে বারগুলো যোগ করে Waterfall Chart তৈরি করা হয়েছে।
২. Bubble Chart তৈরি করা
Bubble Chart হল একটি ধরণের XY Chart যা তিনটি ভেরিয়েবল দেখাতে ব্যবহৃত হয়। এই চার্টে X-Axis এবং Y-Axis এর জন্য দুটি ভেরিয়েবল থাকে, এবং তৃতীয় ভেরিয়েবল দ্বারা বুদবুদ (Bubble) আকার নির্ধারিত হয়। এটি একটি নির্দিষ্ট পয়েন্টের আকারের মাধ্যমে তৃতীয় ভেরিয়েবলের মান উপস্থাপন করে।
Bubble Chart তৈরি করার উদাহরণ:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class BubbleChartExample {
public static void main(String[] args) {
// XYSeries তৈরি করা (X, Y এবং Bubble size)
XYSeries series = new XYSeries("Bubble Data");
series.add(1, 1, 50); // X=1, Y=1, Bubble size=50
series.add(2, 4, 80); // X=2, Y=4, Bubble size=80
series.add(3, 9, 120); // X=3, Y=9, Bubble size=120
series.add(4, 16, 200); // X=4, Y=16, Bubble size=200
series.add(5, 25, 300); // X=5, Y=25, Bubble size=300
// XYSeriesCollection তৈরি করা
XYSeriesCollection dataset = new XYSeriesCollection(series);
// Bubble Chart তৈরি করা
JFreeChart chart = ChartFactory.createBubbleChart(
"Bubble Chart Example", // Chart title
"X-Axis", // X-Axis label
"Y-Axis", // Y-Axis label
dataset, // Dataset
org.jfree.chart.plot.PlotOrientation.VERTICAL, // Plot orientation
true, // Legend
true, // Tooltips
false // URL
);
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট দেখানো
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এই কোডটি একটি Bubble Chart তৈরি করবে যেখানে:
- X এবং Y অ্যাক্সিসে ভ্যালু প্রদর্শিত হবে।
- তৃতীয় ভ্যালু (Bubble Size) দ্বারা বুদবুদ আকার নির্ধারিত হবে।
সারসংক্ষেপ
JFreeChart ব্যবহার করে Waterfall Chart এবং Bubble Chart তৈরি করা সম্ভব, যদিও Waterfall Chart এর জন্য কিছুটা কাস্টমাইজেশন প্রয়োজন। Waterfall Chart সাধারণত বার চার্টের মাধ্যমে সিকোয়েন্স ভিত্তিক ডেটা পরিবর্তন বা পার্থক্য দেখাতে ব্যবহৃত হয়, এবং Bubble Chart তে X, Y, এবং Bubble Size দিয়ে একটি পয়েন্টের আকারের মাধ্যমে তৃতীয় ভেরিয়েবল উপস্থাপন করা হয়। JFreeChart এ এই ধরনের চার্ট তৈরির জন্য ডেটাসেট এবং সিরিজ যথাযথভাবে কনফিগার করা প্রয়োজন।
JFreeChart লাইব্রেরি ব্যবহার করে আপনি Combined Charts এবং Overlaid Charts তৈরি করতে পারেন, যা বিভিন্ন ধরনের চার্টকে একত্রিত করে একটি গ্রাফিক্যাল রিপ্রেজেন্টেশন তৈরি করে। এই ধরনের চার্টগুলোর মাধ্যমে একাধিক ডেটা সেটের তুলনা এবং বিশ্লেষণ করা সহজ হয়।
Combined Charts
Combined Charts হলো এমন চার্ট, যেখানে একাধিক চার্ট একসাথে প্রদর্শিত হয়। এই ধরনের চার্টগুলি সাধারণত দুটি বা তার বেশি ডেটা সেটের তুলনা করার জন্য ব্যবহৃত হয়। JFreeChart এ এটি করা হয় একাধিক প্লট বা চার্টকে একত্রিত করে।
Combined Chart উদাহরণ
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.SpiralPlot;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
public class CombinedChartExample {
public static void main(String[] args) {
// ডেটাসেট ১ (Category Dataset)
DefaultCategoryDataset dataset1 = new DefaultCategoryDataset();
dataset1.addValue(10, "Series1", "Jan");
dataset1.addValue(20, "Series1", "Feb");
dataset1.addValue(30, "Series1", "Mar");
// ডেটাসেট ২ (XY Dataset)
XYSeries series = new XYSeries("XY Data");
series.add(1.0, 2.0);
series.add(2.0, 3.0);
series.add(3.0, 4.0);
XYSeriesCollection dataset2 = new XYSeriesCollection(series);
// দুটি চার্ট তৈরি করা
JFreeChart barChart = ChartFactory.createBarChart(
"Bar Chart Example", // চার্টের শিরোনাম
"Month", // এক্স-অক্ষের নাম
"Value", // ওয়াই-অক্ষের নাম
dataset1, // ডেটাসেট ১
PlotOrientation.VERTICAL,
true,
true,
false
);
JFreeChart lineChart = ChartFactory.createXYLineChart(
"Line Chart Example", // চার্টের শিরোনাম
"X", // এক্স-অক্ষের নাম
"Y", // ওয়াই-অক্ষের নাম
dataset2, // ডেটাসেট ২
PlotOrientation.VERTICAL,
true,
true,
false
);
// Combined Plot তৈরি করা
CategoryPlot combinedPlot = barChart.getCategoryPlot();
XYPlot xyPlot = lineChart.getXYPlot();
combinedPlot.setDomainPannable(true);
// Combined Chart তৈরি করা
JFreeChart combinedChart = new JFreeChart(
"Combined Chart", // Combined Chart শিরোনাম
JFreeChart.DEFAULT_TITLE_FONT,
combinedPlot,
true
);
// Combined Chart প্যানেল তৈরি করা
ChartPanel chartPanel = new ChartPanel(combinedChart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ Combined Chart দেখানো
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- এখানে দুটি আলাদা চার্ট (একটি Bar Chart এবং একটি Line Chart) তৈরি করা হয়েছে এবং Combined Chart তৈরি করার জন্য এগুলোর প্লট একত্রিত করা হয়েছে।
- CategoryPlot এবং XYPlot দুটি আলাদা প্লট ব্যবহার করা হয়েছে এবং তাদের একত্রিত করা হয়েছে JFreeChart এর মাধ্যমে।
Overlaid Charts
Overlaid Charts হলো এমন চার্ট যেখানে দুটি বা তার বেশি চার্ট একে অপরের উপর অবস্থান করে। এটি সাধারণত একাধিক ডেটা সেটের মধ্যে সম্পর্ক বা সঙ্গতি প্রদর্শন করার জন্য ব্যবহৃত হয়। JFreeChart এ এটি তৈরি করা হয় একাধিক প্লটকে একসাথে আচ্ছাদিত (overlay) করে।
Overlaid Chart উদাহরণ
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class OverlaidChartExample {
public static void main(String[] args) {
// ডেটাসেট ১ (XY Dataset)
XYSeries series1 = new XYSeries("Series 1");
series1.add(1.0, 5.0);
series1.add(2.0, 6.0);
series1.add(3.0, 7.0);
// ডেটাসেট ২ (XY Dataset)
XYSeries series2 = new XYSeries("Series 2");
series2.add(1.0, 3.0);
series2.add(2.0, 4.0);
series2.add(3.0, 5.0);
XYSeriesCollection dataset1 = new XYSeriesCollection(series1);
XYSeriesCollection dataset2 = new XYSeriesCollection(series2);
// Overlaid Line Chart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Overlaid Line Chart", // চার্টের শিরোনাম
"X", // এক্স-অক্ষের নাম
"Y", // ওয়াই-অক্ষের নাম
dataset1, // প্রথম ডেটাসেট
PlotOrientation.VERTICAL,
true, // লেজেন্ড দেখানো
true, // টুলটিপস
false // URL সমর্থন
);
// XYPlot এ দ্বিতীয় সিরিজ যোগ করা
XYPlot plot = chart.getXYPlot();
plot.setDataset(1, dataset2); // দ্বিতীয় ডেটাসেট যোগ করা
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
plot.setRenderer(1, renderer); // দ্বিতীয় সিরিজের জন্য রেন্ডারার সেট করা
// চার্ট প্যানেল তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ Overlaid Chart দেখানো
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- এখানে দুটি XYSeries তৈরি করা হয়েছে এবং XYLineChart এর মাধ্যমে প্রথম সিরিজটি প্রর্দশিত হয়েছে।
- দ্বিতীয় সিরিজটি setDataset(1, dataset2) পদ্ধতি ব্যবহার করে XYPlot এ যোগ করা হয়েছে এবং দুটি সিরিজ একে অপরের উপরে দেখানো হচ্ছে।
Combined এবং Overlaid Charts এর মধ্যে পার্থক্য
- Combined Charts:
- একাধিক চার্টের প্লটকে একত্রিত করা হয়।
- প্রতিটি চার্ট আলাদা অংশে প্রদর্শিত হয়।
- সাধারণত বিভিন্ন ধরনের চার্ট (যেমন বার, লাইন) একত্রিত করা হয়।
- Overlaid Charts:
- একাধিক চার্ট একে অপরের উপরে প্রদর্শিত হয়।
- ডেটা সেটের তুলনা করার জন্য এটি বেশি ব্যবহৃত হয়, যেমন একাধিক লাইন গ্রাফ একসাথে প্রদর্শন করা।
- বিভিন্ন ডেটাসেট একে অপরের উপর লেয়ার করা হয়।
সারসংক্ষেপ
JFreeChart ব্যবহার করে আপনি Combined Charts এবং Overlaid Charts তৈরি করতে পারেন, যা একাধিক ডেটা সেটের তুলনা এবং বিশ্লেষণ করতে সহায়ক। Combined Charts এ একাধিক চার্ট একত্রিত করা হয়, যেখানে প্রতিটি চার্ট আলাদা অংশে প্রদর্শিত হয়। অন্যদিকে, Overlaid Charts এ একাধিক চার্ট একে অপরের উপরে অবস্থান করে, যা ডেটা সেটের তুলনা বা সম্পর্ক বিশ্লেষণ করতে সহায়ক।
Read more