Bubble Chart একটি আকর্ষণীয় এবং কার্যকরী গ্রাফিক্যাল উপস্থাপন যেটি ডেটার মধ্যে তিনটি ভ্যারিয়েবলের সম্পর্ক প্রদর্শন করে। এটি সাধারণত X-Axis, Y-Axis এবং Bubble Size (যা তৃতীয় ভ্যারিয়েবল হিসেবে কাজ করে) এর মাধ্যমে ডেটা প্রদর্শন করতে ব্যবহৃত হয়। JFreeChart দিয়ে Bubble Chart তৈরি করা সম্ভব, যেখানে আপনি প্রতিটি বুদ্বুদ (bubble) দিয়ে ডেটার ভিন্ন ভিন্ন মান বা ভ্যারিয়েবল দেখাতে পারবেন।
এই চার্টটি বিশেষভাবে ব্যবহার হয়:
- ডেটার মধ্যে সম্পর্ক বুঝতে।
- মাল্টি-ডাইমেনশনাল ডেটা ভিজ্যুয়ালাইজেশনে।
- ট্রেন্ড এবং আউটলায়ার শনাক্ত করতে।
এখানে আমরা একটি Bubble Chart তৈরি করার উদাহরণ দেখব, যা X, Y এবং Bubble Size সহ ডেটা প্রদর্শন করবে।
1. 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 org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.xy.XYBubbleRenderer;
import javax.swing.*;
import java.awt.*;
public class BubbleChartExample {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Bubble Chart Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(createChartPanel(createDataset()));
frame.pack();
frame.setVisible(true);
});
}
private static XYSeriesCollection createDataset() {
// Creating a dataset for the Bubble Chart
XYSeriesCollection dataset = new XYSeriesCollection();
// Create XYSeries (one for each bubble group)
XYSeries series1 = new XYSeries("Bubble Group 1");
// Adding data: add(x, y, size)
series1.add(1.0, 2.0, 10.0); // (X, Y, size)
series1.add(2.0, 4.0, 20.0);
series1.add(3.0, 6.0, 30.0);
series1.add(4.0, 8.0, 40.0);
series1.add(5.0, 10.0, 50.0);
XYSeries series2 = new XYSeries("Bubble Group 2");
// Adding more data points for another bubble group
series2.add(2.0, 3.0, 15.0);
series2.add(3.5, 5.5, 25.0);
series2.add(4.5, 7.5, 35.0);
dataset.addSeries(series1);
dataset.addSeries(series2);
return dataset;
}
private static ChartPanel createChartPanel(XYSeriesCollection dataset) {
// Creating the Bubble Chart
JFreeChart chart = ChartFactory.createBubbleChart(
"Bubble Chart Example", // Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL, // Orientation
true, // Include legend
true, // Tooltips
false // URLs
);
// Customizing the renderer for bubbles
XYBubbleRenderer renderer = new XYBubbleRenderer(XYBubbleRenderer.SCALE_ON_WIDTH);
chart.getXYPlot().setDomainPannable(true); // Allow panning along X-axis
chart.getXYPlot().setRangePannable(true); // Allow panning along Y-axis
chart.getXYPlot().setRenderer(renderer);
// Return the chart panel to display
return new ChartPanel(chart);
}
}
কোড ব্যাখ্যা:
- XYSeries:
- XYSeries একটি ডেটাসেট তৈরি করে যা X এবং Y ভ্যালুর সাথে সম্পর্কিত বুদ্বুদগুলিকে ধারণ করে। এখানে আমরা দুটি XYSeries তৈরি করেছি:
series1এবংseries2। - প্রতিটি
add(x, y, size)কল দিয়ে আমরা X, Y পজিশন এবং সেগুলোর সাইজ সেট করছি, যা চার্টে বুদ্বুদ হিসাবে প্রদর্শিত হবে।
- XYSeries একটি ডেটাসেট তৈরি করে যা X এবং Y ভ্যালুর সাথে সম্পর্কিত বুদ্বুদগুলিকে ধারণ করে। এখানে আমরা দুটি XYSeries তৈরি করেছি:
- Bubble Chart Creation:
- ChartFactory.createBubbleChart() মেথডটি ব্যবহৃত হয়েছে বুদ্বুদ চার্ট তৈরি করার জন্য। এটি টাইটেল, অক্ষের লেবেল এবং ডেটাসেট আর্গুমেন্ট হিসেবে নেয়।
- XYBubbleRenderer:
- XYBubbleRenderer বুদ্বুদ রেন্ডার করার জন্য ব্যবহৃত হয়। এখানে
XYBubbleRenderer.SCALE_ON_WIDTHসেট করা হয়েছে, যার মাধ্যমে বুদ্বুদগুলোর সাইজের স্কেলিং নির্ধারণ করা হয়।
- XYBubbleRenderer বুদ্বুদ রেন্ডার করার জন্য ব্যবহৃত হয়। এখানে
- ChartPanel:
ChartPanelব্যবহৃত হয়েছে চার্টটিকে GUI উইন্ডোতে প্রদর্শন করার জন্য, এবং এটিJFrameএ যোগ করা হয়েছে।
2. Bubble Chart কাস্টমাইজেশন
JFreeChart এর মাধ্যমে Bubble Chart কাস্টমাইজেশন বেশ সহজ। আপনি বিভিন্ন উপাদান কাস্টমাইজ করতে পারেন, যেমন:
1. Bubble Color পরিবর্তন করা:
renderer.setSeriesPaint(0, Color.RED); // Bubble color for series 1
renderer.setSeriesPaint(1, Color.BLUE); // Bubble color for series 2
2. Bubble Size স্কেলিং পরিবর্তন করা:
XYBubbleRenderer renderer = new XYBubbleRenderer(XYBubbleRenderer.SCALE_ON_SIZE); // Scale on size
3. Gridlines এবং Background Color কাস্টমাইজ করা:
chart.getXYPlot().setDomainGridlinePaint(Color.GRAY); // Change X-axis gridline color
chart.getXYPlot().setRangeGridlinePaint(Color.GRAY); // Change Y-axis gridline color
chart.setBackgroundPaint(Color.WHITE); // Change background color
3. Bubble Chart এর ব্যবহার
Bubble Chart ডেটা ভিজ্যুয়ালাইজেশনে বিভিন্ন ক্ষেত্রে ব্যবহৃত হয়:
- Business Analytics: বিভিন্ন প্রোডাক্টের বিক্রয় এবং লাভের মধ্যে সম্পর্ক বিশ্লেষণ করার জন্য।
- Scientific Data: বিজ্ঞানী বা গবেষকরা ডেটার মধ্যে সম্পর্ক ও প্রবণতা বুঝতে এই চার্ট ব্যবহার করেন।
- Financial Analysis: স্টক মার্কেট, শেয়ার প্রাইস, এবং ব্যবসায়িক ডেটার মধ্যে সম্পর্ক বিশ্লেষণ করতে।
- Marketing Data: মার্কেটিং ক্যাম্পেইনের সফলতা বা ফলাফল বিশ্লেষণ করতে, যেমন গ্রাহকদের মধ্যে প্রভাব এবং মুদ্রা সমন্বয়।
সারাংশ
Bubble Chart হল একটি কার্যকরী গ্রাফিক্যাল উপস্থাপন, যা তিনটি ভ্যারিয়েবলের মধ্যে সম্পর্ক প্রদর্শন করতে সাহায্য করে। JFreeChart দিয়ে সহজেই Bubble Chart তৈরি করা যায়, যেখানে X-Axis, Y-Axis, এবং Bubble Size কাস্টমাইজ করা যায়। JFreeChart এর মাধ্যমে আপনি সহজে Bubble Color, Size, Gridlines, এবং Background কাস্টমাইজ করতে পারেন। এটি ব্যবসায়িক, বৈজ্ঞানিক এবং বিশ্লেষণমূলক কাজে অত্যন্ত কার্যকরী এবং ডেটার গভীরতা এবং সম্পর্ক সহজে উপস্থাপন করতে সাহায্য করে।
Bubble Chart একটি বিশেষ ধরনের চার্ট যেখানে প্রতিটি বুদবুদ (bubble) X, Y, এবং Z মান দ্বারা চিহ্নিত হয়। সাধারণত, X এবং Y অক্ষ ডেটার অবস্থান নির্ধারণ করে এবং Z মান বুদবুদটির আকার বা আয়তন নির্ধারণ করে। এটি ব্যবহার করে আপনি তিনটি পরিমাণগত ভেরিয়েবলের মধ্যে সম্পর্ক দেখাতে পারেন, যেমন: আয়, শিক্ষা, এবং বয়সের মধ্যে সম্পর্ক।
JFreeChart এর মাধ্যমে XYZDataset ব্যবহার করে Bubble Chart তৈরি করা যায়। এই chart আপনাকে ডেটার মধ্যে একটি ভিজ্যুয়াল সম্পর্ক প্রদর্শন করতে সহায়তা করে, যেখানে XYZDataset এর মাধ্যমে আপনি X, Y এবং Z মান সন্নিবেশ করতে পারেন।
1. XYZDataset এর পরিচিতি
XYZDataset হল একটি ডেটাসেট যা X, Y, এবং Z ভ্যালু ধারণ করে। এই ডেটাসেটটি Bubble Chart তৈরির জন্য প্রয়োজনীয় ডেটা সরবরাহ করে। এটি XYZSeries এবং XYZSeriesCollection ক্লাসের মাধ্যমে তৈরি করা হয়।
2. Bubble Chart তৈরি করার উদাহরণ
এখানে একটি উদাহরণ দেওয়া হচ্ছে যা XYZDataset ব্যবহার করে একটি Bubble 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.data.xy.XYZSeries;
import org.jfree.data.xy.XYZSeriesCollection;
import javax.swing.*;
public class BubbleChartExample {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Bubble Chart Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(createChartPanel(createDataset()));
frame.pack();
frame.setVisible(true);
});
}
private static XYZSeriesCollection createDataset() {
XYZSeriesCollection dataset = new XYZSeriesCollection();
// XYZSeries তৈরি করা
XYZSeries series1 = new XYZSeries("Series 1");
// XYZ ডেটা পয়েন্ট যোগ করা
series1.add(1.0, 1.0, 3.0); // X=1, Y=1, Z=3
series1.add(2.0, 4.0, 7.0); // X=2, Y=4, Z=7
series1.add(3.0, 9.0, 2.0); // X=3, Y=9, Z=2
series1.add(4.0, 16.0, 5.0); // X=4, Y=16, Z=5
// আরও একটি Series যোগ করা
XYZSeries series2 = new XYZSeries("Series 2");
series2.add(1.5, 2.0, 6.0);
series2.add(2.5, 6.0, 9.0);
series2.add(3.5, 7.0, 3.0);
series2.add(4.5, 8.0, 4.0);
// ডেটাসেট এ সিরিজ যোগ করা
dataset.addSeries(series1);
dataset.addSeries(series2);
return dataset;
}
private static ChartPanel createChartPanel(XYZSeriesCollection dataset) {
// Bubble Chart তৈরি করা
JFreeChart chart = ChartFactory.createBubbleChart(
"Bubble Chart Example", // Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL, // Orientation
true, // Include Legend
true, // Tooltips
false // URLs
);
// ChartPanel তৈরি করা
return new ChartPanel(chart);
}
}
কোড ব্যাখ্যা:
- XYZSeries:
- XYZSeries হল একটি ডেটা সিরিজ যা X, Y, এবং Z মান ধারণ করে। এখানে, দুটি সিরিজ তৈরি করা হয়েছে:
series1এবংseries2। series1.add(x, y, z)মেথডের মাধ্যমে X, Y এবং Z পয়েন্ট যোগ করা হয়েছে। এই মানগুলি bubble chart এর পয়েন্টগুলোর অবস্থান এবং আকার নির্ধারণ করবে।
- XYZSeries হল একটি ডেটা সিরিজ যা X, Y, এবং Z মান ধারণ করে। এখানে, দুটি সিরিজ তৈরি করা হয়েছে:
- XYZSeriesCollection:
- এটি একাধিক XYZSeries ধারণ করতে সক্ষম। এখানে আমরা দুটি সিরিজ (
series1এবংseries2) তৈরি করেছি এবং সেগুলোকে XYZSeriesCollection এ যোগ করেছি।
- এটি একাধিক XYZSeries ধারণ করতে সক্ষম। এখানে আমরা দুটি সিরিজ (
- ChartFactory.createBubbleChart:
- এই মেথডের মাধ্যমে Bubble Chart তৈরি করা হয়েছে। এটি চারটি প্যারামিটার নেয়:
- Title: চার্টের শিরোনাম।
- X-Axis Label এবং Y-Axis Label: এক্স এবং ওয়াই অক্ষের নাম।
- Dataset: এটি হল ডেটা যা গ্রাফে প্রদর্শিত হবে, যা
XYZSeriesCollectionথেকে নেওয়া হয়েছে।
- এই মেথডের মাধ্যমে Bubble Chart তৈরি করা হয়েছে। এটি চারটি প্যারামিটার নেয়:
- ChartPanel:
- ChartPanel হল একটি প্যানেল যা JFreeChart তৈরি করার পর এটি GUI তে প্রদর্শন করতে ব্যবহৃত হয়। এখানে ChartPanel এর মাধ্যমে চার্টটি JFrame এ দেখানো হচ্ছে।
3. Bubble Chart কাস্টমাইজেশন
JFreeChart এর মাধ্যমে আপনি Bubble Chart কাস্টমাইজ করতে পারেন। এখানে কিছু কাস্টমাইজেশন উদাহরণ দেওয়া হলো:
1. Bubble Size কাস্টমাইজ করা:
// Bubble Size কাস্টমাইজেশন
plot.getRenderer().setSeriesShape(0, Shape.CIRCLE); // Series 1 এর পয়েন্ট গোলাকার হবে
plot.getRenderer().setSeriesShape(1, Shape.SQUARE); // Series 2 এর পয়েন্ট চতুর্ভুজ হবে
2. Bubble Color কাস্টমাইজ করা:
// Bubble Color কাস্টমাইজেশন
plot.getRenderer().setSeriesPaint(0, Color.RED); // Series 1 এর বুদবুদ লাল হবে
plot.getRenderer().setSeriesPaint(1, Color.BLUE); // Series 2 এর বুদবুদ নীল হবে
3. Grid Lines কাস্টমাইজ করা:
// Grid Lines কাস্টমাইজ করা
plot.setDomainGridlinePaint(Color.GRAY); // X-Axis Gridlines
plot.setRangeGridlinePaint(Color.GRAY); // Y-Axis Gridlines
4. Bubble Chart এর ব্যবহার
Bubble Chart মূলত তিনটি ভেরিয়েবলের মধ্যে সম্পর্ক দেখানোর জন্য ব্যবহৃত হয়। কিছু সাধারণ ব্যবহার রয়েছে:
- Business Analysis: যেমন বিক্রয় পরিসংখ্যান, প্রোডাক্ট লাইন পারফরম্যান্স বিশ্লেষণ।
- Financial Data: স্টক মার্কেট বা বিনিয়োগের জন্য X, Y, Z মান বিভিন্ন উপস্থাপন করতে।
- Scientific Research: বৈজ্ঞানিক ডেটার মধ্যে সম্পর্ক বিশ্লেষণ করা।
- Market Research: বাজারে বিভিন্ন সেগমেন্টের মধ্যে সম্পর্ক এবং প্রবণতা বিশ্লেষণ করা।
সারাংশ
XYZDataset ব্যবহার করে JFreeChart এ Bubble Chart তৈরি করা অত্যন্ত সহজ এবং শক্তিশালী। এটি X, Y, এবং Z মান প্রদর্শন করে এবং প্রতিটি বুদবুদ (bubble) এর আকার বা অবস্থান তিনটি পরিমাণগত ভেরিয়েবলের মধ্যে সম্পর্ক দেখায়। এই ধরনের চার্টটি ডেটার মধ্যে বিভিন্ন ধরনের সম্পর্ক বিশ্লেষণ করতে এবং ভিজ্যুয়ালাইজ করতে অত্যন্ত কার্যকরী। JFreeChart এর মাধ্যমে আপনি আপনার চার্ট কাস্টমাইজও করতে পারেন, যেমন বুদবুদগুলির আকার, রঙ, এবং আকৃতি পরিবর্তন করা।
JFreeChart একটি শক্তিশালী লাইব্রেরি যা Java-তে বিভিন্ন ধরনের গ্রাফ এবং চার্ট তৈরি করতে ব্যবহৃত হয়। যখন আপনি Scatter Plot তৈরি করেন, তখন ডেটা পয়েন্টগুলির আকার (size) এবং রঙ (color) কাস্টমাইজ করা খুবই গুরুত্বপূর্ণ, কারণ এটি চার্টের দৃশ্যমানতা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
এখানে, আমরা দেখব কিভাবে JFreeChart ব্যবহার করে Scatter Plot এর Data Points এর Size এবং Color কাস্টমাইজ করা যায়।
1. Scatter Plot তৈরি করা এবং Data Points এর Size এবং Color কাস্টমাইজ করা
উদাহরণ কোড:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.Color;
public class ScatterPlotExample {
public static void main(String[] args) {
// ১. ডেটাসেট তৈরি করা
XYSeriesCollection dataset = createDataset();
// ২. Scatter Plot তৈরি করা
JFreeChart scatterPlot = ChartFactory.createScatterPlot(
"Scatter Plot 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
);
// ৩. XYPlot কাস্টমাইজ করা
XYPlot plot = scatterPlot.getXYPlot();
XYItemRenderer renderer = plot.getRenderer();
// ৪. Data Points এর রঙ এবং আকার কাস্টমাইজ করা
renderer.setSeriesPaint(0, Color.RED); // প্রথম সিরিজের পয়েন্টের রঙ লাল
renderer.setSeriesShape(0, new java.awt.geom.Ellipse2D.Double(-3, -3, 6, 6)); // পয়েন্টের আকার সন্নিবেশিত গোলাকার
// ৫. ChartPanel তৈরি করা এবং JFrame এ প্রদর্শন করা
ChartPanel chartPanel = new ChartPanel(scatterPlot);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame("JFreeChart Scatter Plot Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(chartPanel);
frame.pack();
frame.setVisible(true);
}
// ৬. ডেটাসেট তৈরি করার মেথড
private static XYSeriesCollection createDataset() {
XYSeries series = new XYSeries("Data Points");
// ডেটা পয়েন্ট যোগ করা
series.add(1, 5);
series.add(2, 8);
series.add(3, 12);
series.add(4, 18);
series.add(5, 25);
series.add(6, 40);
// XYSeriesCollection তৈরি করা
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
return dataset;
}
}
2. কোডের ব্যাখ্যা
- XYSeriesCollection:
- এটি একাধিক XYSeries ধারণ করে, যেখানে প্রতিটি XYSeries একটি সন্নিবেশ বা ডেটা সিরিজ। এখানে আমরা একটিমাত্র সিরিজ ব্যবহার করেছি, তবে একাধিক সিরিজও যোগ করা যেতে পারে।
- XYPlot:
- XYPlot হল জেমিটার চার্টের প্লট এলাকা যেখানে X এবং Y অক্ষের উপর ডেটা পয়েন্টের সম্পর্ক চিত্রিত হয়।
scatterPlot.getXYPlot()মেথডের মাধ্যমে এটি এক্সেস করা হয়েছে।
- XYPlot হল জেমিটার চার্টের প্লট এলাকা যেখানে X এবং Y অক্ষের উপর ডেটা পয়েন্টের সম্পর্ক চিত্রিত হয়।
- XYItemRenderer:
- XYItemRenderer দিয়ে আমরা ডেটা পয়েন্টের রঙ এবং আকার কাস্টমাইজ করি।
setSeriesPaint()মেথড দিয়ে রঙ পরিবর্তন করা হয়েছে এবংsetSeriesShape()মেথড দিয়ে পয়েন্টের আকার পরিবর্তন করা হয়েছে।
- XYItemRenderer দিয়ে আমরা ডেটা পয়েন্টের রঙ এবং আকার কাস্টমাইজ করি।
- Data Point Shape:
new java.awt.geom.Ellipse2D.Double(-3, -3, 6, 6)দ্বারা গোলাকার আকার তৈরি করা হয়েছে। আপনি এটি পরিবর্তন করে অন্য কোন শেপ ব্যবহার করতে পারেন যেমনRectangleবাDiamond।
- ChartPanel:
ChartPanelতৈরি করে এবং সেটি একটি JFrame এর মধ্যে প্রদর্শন করা হয়েছে।
3. Data Points এর Color কাস্টমাইজ করা
Scatter Plot এর ডেটা পয়েন্টগুলির রঙ কাস্টমাইজ করার জন্য setSeriesPaint() মেথড ব্যবহার করা হয়। এটি দিয়ে আপনি প্রতিটি সিরিজের রঙ নির্ধারণ করতে পারেন।
renderer.setSeriesPaint(0, Color.RED); // প্রথম সিরিজের পয়েন্টের রঙ লাল
এখানে 0 হলো সিরিজের ইনডেক্স এবং Color.RED হলো রঙের মান। আপনি Color.BLUE, Color.GREEN, অথবা নিজের পছন্দ অনুযায়ী অন্যান্য রঙ ব্যবহার করতে পারেন।
4. Data Points এর Shape কাস্টমাইজ করা
Data Points এর আকার কাস্টমাইজ করতে setSeriesShape() মেথড ব্যবহার করা হয়। এটি দিয়ে আপনি পয়েন্টের আকারের বিভিন্ন শেপ কাস্টমাইজ করতে পারেন, যেমন Circle, Square, Diamond ইত্যাদি।
renderer.setSeriesShape(0, new java.awt.geom.Ellipse2D.Double(-3, -3, 6, 6)); // Circle Shape
এখানে, Ellipse2D.Double(-3, -3, 6, 6) একটি গোলাকার (Circle) আকার তৈরি করছে। আপনি এখানে অন্য শেপও ব্যবহার করতে পারেন, যেমন:
renderer.setSeriesShape(0, new java.awt.geom.Rectangle2D.Double(-3, -3, 6, 6)); // Square Shape
5. Color and Size কাস্টমাইজেশন
এখন, ধরুন আপনি XYPlot এর ডেটা পয়েন্টগুলোর রঙ এবং আকার পরিবর্তন করতে চান। উপরের কোডে renderer.setSeriesPaint() এবং renderer.setSeriesShape() ব্যবহার করে আপনি রঙ এবং আকার কাস্টমাইজ করতে পারবেন।
- Color:
Color.RED,Color.GREEN,Color.BLUEইত্যাদি রঙ নির্বাচন করতে পারেন। - Size/Shape:
Ellipse2D(Circle),Rectangle2D(Square),Polygon2D(Diamond) ইত্যাদি শেপ নির্বাচন করতে পারেন।
6. ফলাফল
এই কোডটি চালালে একটি Scatter Plot প্রদর্শিত হবে যেখানে Red Colored Data Points থাকবে এবং Circle Shape থাকবে। আপনি সহজেই Data Points এর আকার এবং রঙ কাস্টমাইজ করতে পারবেন এবং ভিজ্যুয়ালাইজেশনকে আরও আকর্ষণীয় এবং পরিষ্কার করতে পারবেন।
সারাংশ
JFreeChart এর মাধ্যমে Scatter Plot তৈরি করার পর, আপনি XYItemRenderer ব্যবহার করে Data Points এর Size এবং Color কাস্টমাইজ করতে পারেন। setSeriesPaint() মেথড দিয়ে আপনি Data Points এর রঙ পরিবর্তন করতে পারেন এবং setSeriesShape() মেথড দিয়ে আপনি Data Points এর আকার পরিবর্তন করতে পারেন। এটি Scatter Plot এর ভিজ্যুয়াল অ্যাপিয়ারেন্স উন্নত করতে সাহায্য করে এবং আপনাকে ডেটা পয়েন্টগুলোর মাঝে স্পষ্ট পার্থক্য তুলে ধরতে সহায়তা করে।
Bubble Chart একটি XY প্লটের উপর ভিত্তি করে তৈরি হয়, যেখানে প্রতিটি বুদবুদ একটি নির্দিষ্ট স্থান (X এবং Y মান) এবং আকার (বুদবুদটির আকার) দ্বারা উপস্থাপিত হয়। এটি সাধারণত সম্পর্ক বিশ্লেষণ করার জন্য ব্যবহৃত হয়, যেখানে একটি বা একাধিক ভেরিয়েবলের মধ্যে সম্পর্ক বা কোরিলেশন দেখা যায়।
এই গাইডে আমরা দেখব কিভাবে JFreeChart ব্যবহার করে Multiple Series সহ Bubble Chart তৈরি করা যায়। এই উদাহরণে আমরা দুইটি বা তার বেশি সিরিজ (series) নিয়ে একটি Bubble Chart তৈরি করব এবং তাদের মধ্যে সম্পর্ক প্রদর্শন করব।
1. JFreeChart লাইব্রেরি সেটআপ
JFreeChart ব্যবহার করার জন্য প্রথমে আপনাকে JFreeChart লাইব্রেরি আপনার প্রজেক্টে যোগ করতে হবে। যদি আপনি Maven ব্যবহার করেন, তাহলে আপনার pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করতে হবে:
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.3</version>
</dependency>
যদি Maven ব্যবহার না করেন, তবে আপনাকে JFreeChart এবং JCommon JAR ফাইলগুলো ডাউনলোড করে আপনার প্রজেক্টে যোগ করতে হবে।
2. Multiple Series সহ Bubble Chart তৈরি করা
এখানে আমরা দুটি বা তার বেশি সিরিজ সহ একটি Bubble Chart তৈরি করব। প্রতিটি সিরিজে কিছু ডেটা পয়েন্ট থাকবে এবং তাদের আকার আলাদা হবে।
উদাহরণ: Multiple Series সহ Bubble Chart তৈরি করা
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.XYPlot;
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) {
// ১. ডেটাসেট তৈরি করা (Multiple Series)
XYSeriesCollection dataset = createDataset();
// ২. Bubble Chart তৈরি করা
JFreeChart bubbleChart = ChartFactory.createBubbleChart(
"Multiple Series Bubble Chart", // Chart title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset, // Dataset
org.jfree.chart.plot.PlotOrientation.VERTICAL,
true, // Include legend
true, // Tooltips enabled
false // URLs enabled
);
// ৩. ChartPanel তৈরি করা এবং JFrame এ প্রদর্শন করা
ChartPanel chartPanel = new ChartPanel(bubbleChart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame("Bubble Chart Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(chartPanel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
// ৪. Multiple Series সহ ডেটাসেট তৈরি করার মেথড
private static XYSeriesCollection createDataset() {
XYSeries series1 = new XYSeries("Series 1");
series1.add(1.0, 5.0, 10.0); // (X, Y, Size)
series1.add(2.0, 10.0, 20.0);
series1.add(3.0, 15.0, 30.0);
series1.add(4.0, 20.0, 40.0);
XYSeries series2 = new XYSeries("Series 2");
series2.add(1.5, 7.0, 15.0);
series2.add(2.5, 12.0, 25.0);
series2.add(3.5, 17.0, 35.0);
series2.add(4.5, 22.0, 45.0);
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series1);
dataset.addSeries(series2);
return dataset;
}
}
কোড ব্যাখ্যা:
- XYSeries:
- XYSeries হল এক ধরনের সিরিজ যা X, Y এবং Z ভ্যালু ধারণ করে।
- X এবং Y মান চার্টের অবস্থান নির্ধারণ করে এবং Z মান (যা এখানে "Size") বুদবুদের আকার নির্দেশ করে।
- XYSeriesCollection:
- এটি একাধিক XYSeries ধারণ করতে সক্ষম এবং এগুলোকে একসাথে একটি dataset হিসাবে ব্যবহার করা হয়।
- এখানে দুটি সিরিজ যোগ করা হয়েছে:
series1এবংseries2।
- ChartFactory.createBubbleChart():
- Bubble Chart তৈরি করার জন্য এই মেথডটি ব্যবহার করা হয়েছে। এটি চারটি আর্গুমেন্ট নেয়:
- Chart Title,
- X-Axis Label,
- Y-Axis Label,
- Dataset (যা এখানে
XYSeriesCollectionব্যবহৃত হচ্ছে)।
- এই ফাংশনটি একটি বুদবুদ চার্ট তৈরি করবে।
- Bubble Chart তৈরি করার জন্য এই মেথডটি ব্যবহার করা হয়েছে। এটি চারটি আর্গুমেন্ট নেয়:
- ChartPanel:
- এটি JFreeChart চার্টটিকে GUI উইন্ডোতে প্রদর্শন করার জন্য ব্যবহৃত হয়।
3. Bubble Chart এর কাস্টমাইজেশন
আপনি Bubble Chart এর বিভিন্ন উপাদান কাস্টমাইজ করতে পারেন, যেমন:
- Data Points এর রঙ: প্রতিটি সিরিজের জন্য আলাদা রঙ সেট করা।
- Size of Data Points: বুদবুদগুলির আকার কাস্টমাইজ করা।
- Grid Lines এবং Axes: গ্রিড লাইন এবং অক্ষের লেবেল কাস্টমাইজ করা।
3.1 Bubble Chart এর Data Points এর রঙ পরিবর্তন করা
XYPlot plot = (XYPlot) bubbleChart.getPlot();
plot.getRenderer().setSeriesPaint(0, Color.RED); // Series 1 এর বুদবুদ লাল রঙে পরিবর্তন করা
plot.getRenderer().setSeriesPaint(1, Color.BLUE); // Series 2 এর বুদবুদ নীল রঙে পরিবর্তন করা
3.2 Bubble Chart এর Data Points এর আকার পরিবর্তন করা
plot.getRenderer().setSeriesShape(0, new java.awt.geom.Ellipse2D.Double(-4, -4, 8, 8)); // বুদবুদ আকার পরিবর্তন
plot.getRenderer().setSeriesShape(1, new java.awt.geom.Ellipse2D.Double(-6, -6, 12, 12)); // দ্বিতীয় সিরিজের বুদবুদ আকার
4. Bubble Chart এর রঙ কাস্টমাইজেশন
JFreeChart-এ আপনি সহজেই Bubble Chart এর বুদবুদগুলির রঙ এবং আকার কাস্টমাইজ করতে পারেন। setSeriesPaint() এবং setSeriesShape() মেথড ব্যবহার করে আপনি সিরিজের রঙ এবং আকার পরিবর্তন করতে পারবেন। এছাড়া, আপনি Tooltips এবং Legend এর কাস্টমাইজেশনও করতে পারেন।
5. সারাংশ
Bubble Chart তৈরি করতে XYSeriesCollection এবং XYSeries ব্যবহার করতে হয়, যেখানে প্রতিটি সিরিজের জন্য X, Y এবং Size ভ্যালু নির্ধারণ করা হয়। JFreeChart এর মাধ্যমে আপনি Multiple Series সহ Bubble Chart তৈরি করতে পারেন এবং সেই সিরিজগুলির রঙ এবং আকার কাস্টমাইজ করতে পারেন। এছাড়া, আপনি Axes, Labels, Tooltips, এবং Legend এর কাস্টমাইজেশনও করতে পারবেন, যা আপনার চার্টকে আরও আকর্ষণীয় এবং কার্যকরী করে তোলে।
JFreeChart একটি শক্তিশালী Java লাইব্রেরি যা ডেটা ভিজ্যুয়ালাইজেশনে ব্যবহৃত হয়। Multidimensional Data Visualization (বহুবিধimensional ডেটা ভিজ্যুয়ালাইজেশন) এমন ডেটা ভিজ্যুয়ালাইজেশন যেখানে একাধিক ভ্যারিয়েবল বা ডাইমেনশন বিশ্লেষণ করা হয়। এটি বিশেষত সেই ক্ষেত্রে ব্যবহৃত হয় যেখানে বিভিন্ন ডেটা পয়েন্ট একসাথে সম্পর্কিত হয় এবং সেগুলোর পারস্পরিক সম্পর্ক বা ট্রেন্ড বুঝতে হয়।
এখানে, আমরা Multidimensional Data Visualization এর জন্য কিছু জনপ্রিয় চর্চা যেমন 3D Scatter Plot, Bubble Chart, এবং Heat Map কিভাবে তৈরি করা যায় তা দেখব।
1. Multidimensional Data কী?
Multidimensional Data হল এমন ডেটা যেখানে একাধিক ভ্যারিয়েবল বা ডাইমেনশন থাকে। উদাহরণস্বরূপ:
- 3D Data: একটি ডেটাসেট যেখানে তিনটি ভ্যারিয়েবল X, Y, এবং Z আছে।
- Time Series Data: যেখানে সময়ের সাথে বিভিন্ন ভ্যারিয়েবল পরিবর্তন হচ্ছে।
Multidimensional Data Visualization সাধারণত 3D charts, bubble charts, এবং heat maps এর মাধ্যমে করা হয়, যেখানে একাধিক ভ্যারিয়েবল বা ডাইমেনশন দেখা যায়।
2. 3D Scatter Plot তৈরি করা
3D Scatter Plot ডেটার তিনটি ভ্যারিয়েবলের মধ্যে সম্পর্ক দেখানোর জন্য ব্যবহৃত হয়। তবে JFreeChart সরাসরি 3D scatter plot সাপোর্ট করে না, তবে আপনি এটি সিমুলেট করতে পারেন অন্য ধরনের চার্ট দিয়ে, যেমন XYPlot।
উদাহরণ: 3D Scatter 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 ScatterPlot3DExample {
public static void main(String[] args) {
// ৩টি ভ্যারিয়েবল X, Y এবং Z ব্যবহার করে ডেটা যোগ করা
XYSeries series = new XYSeries("3D Data Points");
series.add(1, 5); // X=1, Y=5
series.add(2, 8); // X=2, Y=8
series.add(3, 12); // X=3, Y=12
series.add(4, 18); // X=4, Y=18
series.add(5, 25); // X=5, Y=25
series.add(6, 40); // X=6, Y=40
// Dataset তৈরি
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
// Scatter Plot তৈরি
JFreeChart chart = ChartFactory.createScatterPlot(
"3D Scatter Plot Simulation", // Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset, // Dataset
org.jfree.chart.plot.PlotOrientation.VERTICAL,
true, // Legend
true // Tooltips
);
// ChartPanel তৈরি
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ প্রদর্শন
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
কোড ব্যাখ্যা:
- এই উদাহরণে XYSeries ব্যবহার করে আমরা X এবং Y ভ্যারিয়েবলগুলোর জন্য কিছু ডেটা পয়েন্ট যুক্ত করেছি।
- 3D Scatter Plot বাস্তবায়ন করতে JFreeChart একটি সাধারণ XY Scatter Plot তৈরি করেছে, তবে আমরা যদি 3D ভিজ্যুয়ালাইজেশন চান, তবে আপনি আলাদা লাইব্রেরি যেমন Jzy3d বা JavaFX ব্যবহার করতে পারেন।
3. Bubble Chart তৈরি করা
Bubble Chart একটি বিশেষ ধরনের চার্ট যেখানে তিনটি ভ্যারিয়েবল X, Y, এবং Z (বাবল সাইজ) থাকে। এটি Multidimensional Data Visualization এর জন্য একটি জনপ্রিয় চার্ট। JFreeChart তে Bubble Chart তৈরি করা যায়।
উদাহরণ: 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) {
// Bubble Chart এর জন্য Dataset তৈরি করা
XYSeries series = new XYSeries("Bubble Data");
// X, Y, এবং S (Bubble Size) ভ্যালু দিয়ে ডেটা পয়েন্ট যোগ করা
series.add(1, 5, 4); // X=1, Y=5, S=4
series.add(2, 8, 6); // X=2, Y=8, S=6
series.add(3, 12, 8); // X=3, Y=12, S=8
series.add(4, 18, 10); // X=4, Y=18, S=10
series.add(5, 25, 12); // X=5, Y=25, S=12
// Dataset তৈরি
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(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,
true, // Legend
true // Tooltips
);
// ChartPanel তৈরি
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ প্রদর্শন
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
কোড ব্যাখ্যা:
- Bubble Chart তৈরি করতে,
ChartFactory.createBubbleChart()মেথড ব্যবহার করা হয়েছে। - আমরা XYSeries তে X, Y, এবং সাইজ (S) ভ্যালু দিয়ে ডেটা পয়েন্ট যোগ করেছি।
XYSeriesCollectionব্যবহার করে আমরা একাধিক সিরিজ যুক্ত করতে পারি, কিন্তু এখানে আমরা একটি সিরিজ ব্যবহার করেছি।
4. Heat Map তৈরি করা
Heat Map ডেটার তাপমাত্রার মতো পরিসংখ্যান দেখাতে ব্যবহৃত হয়, যেখানে ডেটার ভ্যালু বিভিন্ন রঙে উপস্থাপিত হয়। JFreeChart সরাসরি Heat Map সাপোর্ট না করলেও, XYPlot এর মাধ্যমে আমরা এ ধরনের ডেটা ভিজ্যুয়ালাইজেশন তৈরি করতে পারি।
সারাংশ
Multidimensional Data Visualization হল একাধিক ভ্যারিয়েবল বা ডাইমেনশন বিশ্লেষণ করার একটি গুরুত্বপূর্ণ উপায়, এবং JFreeChart লাইব্রেরি এই ডেটা ভিজ্যুয়ালাইজেশন এর জন্য অত্যন্ত কার্যকর।
- 3D Scatter Plot, Bubble Chart, এবং Heat Map এর মাধ্যমে আপনি Multidimensional Data গুলি সহজে ভিজ্যুয়ালাইজ করতে পারবেন।
- JFreeChart তে সরাসরি Bubble Chart এবং 3D scatter plots তৈরি করা যায়, তবে 3D ভিজ্যুয়ালাইজেশন সম্পূর্ণরূপে জিএফএক্স লাইব্রেরি ব্যবহারের মাধ্যমে করা হয়।
- Bubble Chart এবং XYPlot ব্যবহার করে সহজেই Multidimensional Data এবং সম্পর্ক প্রদর্শন করা যায়।
JFreeChart ব্যবহারের মাধ্যমে আপনি পরিসংখ্যানগত এবং বিশ্লেষণাত্মক ডেটাকে সহজে দৃশ্যমান এবং সমঝদার করতে পারবেন।
Read more