JFreeChart একটি শক্তিশালী লাইব্রেরি যা Java তে গ্রাফ এবং চার্ট তৈরি করতে ব্যবহৃত হয়। এর মাধ্যমে বিভিন্ন ধরনের গ্রাফ, যেমন Bar Chart, Line Chart, Pie Chart, এবং Scatter Plot তৈরি করা যায়। এই গাইডে, আমরা দেখবো কিভাবে Scatter Plot Chart তৈরি করা যায়।
Scatter Plot Chart (বা XY Plot) একটি চার্ট যেখানে X এবং Y অক্ষের মধ্যে সম্পর্ক দেখানো হয়, যা বিভিন্ন ধরনের ডেটার মধ্যে সম্পর্ক বিশ্লেষণ করতে ব্যবহৃত হয়। সাধারণত এটি দুইটি পরিমাণগত ভেরিয়েবলের মধ্যে সম্পর্ক দেখাতে ব্যবহৃত হয়, যেমন: উচ্চতা এবং ওজন, আয় এবং শিক্ষা, সময় এবং গতির পরিবর্তন ইত্যাদি।
Scatter Plot Chart তৈরি করার জন্য প্রয়োজনীয় উপাদান
JFreeChart ব্যবহার করে একটি Scatter Plot Chart তৈরি করতে আপনাকে নিম্নলিখিত উপাদান ব্যবহার করতে হবে:
- Dataset: ডেটা ধারণ করার জন্য একটি XYDataset প্রয়োজন। এটি X এবং Y ভ্যালুর মধ্যে সম্পর্ক প্রদর্শন করবে।
- Chart: ডেটা প্রদর্শন করার জন্য একটি চিত্র তৈরি করতে হবে।
- ChartPanel: এটি চার্টকে একটি GUI উইন্ডোতে প্রদর্শন করতে ব্যবহৃত হয়।
উদাহরণ: Scatter Plot Chart তৈরি করা
এখানে একটি উদাহরণ দেওয়া হয়েছে, যা একটি Scatter Plot Chart তৈরি করবে এবং X-Y ডেটা পয়েন্ট প্রদর্শন করবে।
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 ScatterPlotExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি
XYSeriesCollection dataset = createDataset();
// Scatter Plot Chart তৈরি
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, // Orientation
true, // Include Legend
true, // Tooltips
false // URLs
);
// ChartPanel তৈরি করা এবং JFrame এ প্রদর্শন করা
ChartPanel chartPanel = new ChartPanel(scatterPlot);
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);
}
// Dataset তৈরি করা
private static XYSeriesCollection createDataset() {
XYSeries series = new XYSeries("Data Series");
// X এবং Y পয়েন্ট যোগ করা
series.add(1.0, 2.0);
series.add(2.0, 3.0);
series.add(3.0, 5.0);
series.add(4.0, 7.0);
series.add(5.0, 6.0);
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
return dataset;
}
}
কোড ব্যাখ্যা
- XYSeries:
- XYSeries হল একটি ডেটাসেট যা X এবং Y অ্যাক্সিসের জন্য ডেটা পয়েন্ট ধারণ করে। প্রতিটি
add(x, y)মেথড কল X এবং Y পয়েন্টের মান সংযুক্ত করে। - এখানে
series.add(1.0, 2.0)এর মাধ্যমে X অ্যাক্সিসে 1.0 এবং Y অ্যাক্সিসে 2.0 পয়েন্ট যুক্ত করা হয়েছে।
- XYSeries হল একটি ডেটাসেট যা X এবং Y অ্যাক্সিসের জন্য ডেটা পয়েন্ট ধারণ করে। প্রতিটি
- XYSeriesCollection:
- এটি এক বা একাধিক XYSeries ধারণ করার জন্য ব্যবহৃত হয়। একাধিক সিরিজ থাকতে পারে, যা একাধিক ধরনের ডেটা প্রদর্শন করতে সাহায্য করে। এখানে আমরা একক সিরিজ ব্যবহার করেছি।
- ChartFactory.createScatterPlot:
- এই মেথডটির মাধ্যমে Scatter Plot Chart তৈরি করা হয়েছে। এটি চারটি মূল প্যারামিটার নেয়:
- Chart Title: চার্টের শিরোনাম।
- X-Axis Label এবং Y-Axis Label: X এবং Y অক্ষের লেবেল।
- Dataset: ডেটাসেট যা চার্টে প্রদর্শন করা হবে।
- এই মেথডটির মাধ্যমে Scatter Plot Chart তৈরি করা হয়েছে। এটি চারটি মূল প্যারামিটার নেয়:
- ChartPanel:
- ChartPanel একটি UI প্যানেল যা চার্টটি প্রদর্শন করে। এটিকে JFrame এর মধ্যে যোগ করা হয় যাতে GUI তে চার্টটি দেখা যায়।
- JFrame:
- একটি JFrame তৈরি করে আমরা সেই প্যানেলে চার্টটি যোগ করি, তারপর সেই উইন্ডোটি pack() এবং setVisible(true) দিয়ে প্রদর্শন করি।
Scatter Plot কাস্টমাইজেশন
JFreeChart এর মাধ্যমে আপনি আপনার Scatter Plot Chart কাস্টমাইজ করতে পারেন। কিছু কাস্টমাইজেশন উদাহরণ নিচে দেওয়া হলো:
1. Chart এর সেকশন রঙ পরিবর্তন করা:
scatterPlot.getPlot().setDomainPannable(true);
scatterPlot.getPlot().setRangePannable(true);
2. ডেটা পয়েন্টের রঙ পরিবর্তন করা:
scatterPlot.getXYPlot().getRenderer().setSeriesPaint(0, java.awt.Color.RED);
3. Gridlines পরিবর্তন করা:
scatterPlot.getXYPlot().setDomainGridlinePaint(java.awt.Color.BLUE);
scatterPlot.getXYPlot().setRangeGridlinePaint(java.awt.Color.GREEN);
Scatter Plot Chart এর ব্যবহার
Scatter Plot Chart মূলত দুটি পরিমাণগত ভেরিয়েবলের মধ্যে সম্পর্ক বিশ্লেষণ করতে ব্যবহৃত হয়। এর কিছু সাধারণ ব্যবহার হলো:
- ডেটার মধ্যে সম্পর্ক বিশ্লেষণ: যেমন বিভিন্ন প্রোডাক্টের দাম এবং বিক্রয়, বা বিভিন্ন অঞ্চলের গড় তাপমাত্রা এবং আর্দ্রতা।
- ট্রেন্ড বা প্যাটার্ন শনাক্ত করা: সাধারণত X এবং Y এর মধ্যে সম্পর্কের শক্তি এবং প্রকৃতি বিশ্লেষণ করতে ব্যবহৃত হয়। এটি ডেটার মধ্যে কোনো লিনিয়ার বা নন-লিনিয়ার সম্পর্ক খুঁজে পেতে সাহায্য করে।
- অবিশ্বস্ত ডেটা শনাক্তকরণ: Scatter Plot Chart ব্যবহার করে আপনি সহজেই অস্বাভাবিক বা outliers ডেটা পয়েন্টগুলো চিহ্নিত করতে পারেন।
সারাংশ
JFreeChart দিয়ে Scatter Plot Chart তৈরি করা একটি সহজ এবং কার্যকরী প্রক্রিয়া। এটি XYSeries এবং XYSeriesCollection ব্যবহার করে ডেটা প্রদর্শন করে এবং তারপর ChartFactory.createScatterPlot() মেথডের মাধ্যমে সেই ডেটাকে গ্রাফিক্যালভাবে উপস্থাপন করা হয়। JFreeChart ব্যবহার করে আপনি সহজেই ডেটার মধ্যে সম্পর্ক বিশ্লেষণ করতে পারেন এবং সেগুলি ভিজ্যুয়ালাইজ করতে পারেন।
JFreeChart একটি শক্তিশালী Java লাইব্রেরি যা ডেটার ভিজ্যুয়ালাইজেশন সহজ এবং কার্যকরী করে তোলে। এর মধ্যে XYDataset ব্যবহার করে আপনি বিভিন্ন ধরনের scatter plot তৈরি করতে পারেন। Scatter plot একটি গ্রাফিক্যাল রেপ্রেজেন্টেশন যা দুটি ভেরিয়েবলের মধ্যে সম্পর্ক দেখাতে ব্যবহৃত হয়। প্রতিটি ডেটা পয়েন্ট এক্স (X) এবং ওয়াই (Y) ভ্যালু দিয়ে চিহ্নিত হয়।
এখানে আমরা XYDataset ব্যবহার করে একটি scatter plot তৈরি করার উদাহরণ দেখব।
XYDataset কি?
XYDataset একটি ডেটা স্ট্রাকচার যা X এবং Y অক্ষের জন্য ডেটা পয়েন্ট ধারণ করে। এই Dataset সাধারণত scatter plots বা line charts তৈরির জন্য ব্যবহৃত হয়। এটি XYSeries বা XYSeriesCollection এর মাধ্যমে তৈরি করা হয়, যেখানে এক্স এবং ওয়াই ভ্যালু স্টোর করা হয়।
উদাহরণ: JFreeChart দিয়ে Scatter Plot তৈরি
Step 1: প্রয়োজনীয় লাইব্রেরি যুক্ত করা
প্রথমেই, নিশ্চিত হয়ে নিন যে আপনি JFreeChart এবং JCommon লাইব্রেরিগুলি আপনার প্রজেক্টে যুক্ত করেছেন। আপনি যদি Maven ব্যবহার করেন, তাহলে pom.xml ফাইলে ডিপেনডেন্সি যোগ করতে পারেন:
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.3</version> <!-- সর্বশেষ ভার্সন -->
</dependency>
Step 2: Scatter Plot তৈরি করার কোড
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.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
public class ScatterPlotExample {
public static void main(String[] args) {
// Dataset তৈরি
XYSeriesCollection dataset = createDataset();
// Scatter Plot তৈরি করা
JFreeChart chart = ChartFactory.createScatterPlot(
"Scatter Plot 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 তৈরি এবং JFrame এ প্রদর্শন
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(chartPanel);
frame.pack();
frame.setVisible(true);
}
// Dataset তৈরি করা
private static XYSeriesCollection createDataset() {
XYSeriesCollection dataset = new XYSeriesCollection();
// XYSeries তৈরি করা
XYSeries series1 = new XYSeries("Series 1");
series1.add(1.0, 1.0);
series1.add(2.0, 4.0);
series1.add(3.0, 9.0);
series1.add(4.0, 16.0);
XYSeries series2 = new XYSeries("Series 2");
series2.add(1.0, 2.0);
series2.add(2.0, 3.0);
series2.add(3.0, 5.0);
series2.add(4.0, 7.0);
// Series dataset এ যোগ করা
dataset.addSeries(series1);
dataset.addSeries(series2);
return dataset;
}
}
কোডের ব্যাখ্যা:
- XYSeries:
- XYSeries একটি ডেটা সিরিজ যা X এবং Y মান ধারণ করে। এটি বিশেষ করে scatter plot বা line chart তৈরির জন্য ব্যবহৃত হয়। এখানে আমরা দুটি সিরিজ তৈরি করেছি:
series1এবংseries2। series1.add(x, y)ব্যবহার করে প্রতিটি X এবং Y পয়েন্ট যোগ করা হয়েছে।
- XYSeries একটি ডেটা সিরিজ যা X এবং Y মান ধারণ করে। এটি বিশেষ করে scatter plot বা line chart তৈরির জন্য ব্যবহৃত হয়। এখানে আমরা দুটি সিরিজ তৈরি করেছি:
- XYSeriesCollection:
- XYSeriesCollection হল একটি ডেটা সংগ্রহকারী যা একাধিক XYSeries ধারণ করতে পারে। আমরা এখানে দুটি সিরিজ (series1 এবং series2) যোগ করেছি।
- ChartFactory.createScatterPlot():
- এই মেথডটি Scatter Plot তৈরি করতে ব্যবহৃত হয়। এটি চারটি প্যারামিটার নেয়:
- Title: চার্টের শিরোনাম
- X-Axis Label: X-Axis এর নাম
- Y-Axis Label: Y-Axis এর নাম
- Dataset: এটি হল ডেটা যা চার্টে প্রদর্শিত হবে (XYSeriesCollection)
- এই মেথডটি Scatter Plot তৈরি করতে ব্যবহৃত হয়। এটি চারটি প্যারামিটার নেয়:
- ChartPanel:
- ChartPanel একটি প্যানেল যা চার্টটি GUI তে প্রদর্শন করার জন্য ব্যবহৃত হয়। এটি JFreeChart এর মাধ্যমে তৈরি করা চার্টের একটি ভিজ্যুয়াল উপস্থাপন।
- JFrame:
- JFrame ব্যবহার করা হয়েছে পাই চার্টটিকে একটি উইন্ডোতে প্রদর্শন করার জন্য।
3. Scatter Plot কাস্টমাইজেশন
JFreeChart-এ আপনি Scatter Plot কাস্টমাইজ করতে পারেন। নিচে কিছু কাস্টমাইজেশন উদাহরণ দেওয়া হলো:
উদাহরণ: পয়েন্টের আকার এবং রঙ পরিবর্তন করা
// Scatter Plot এর পয়েন্টের আকার এবং রঙ পরিবর্তন করা
XYPlot plot = chart.getXYPlot();
plot.getRenderer().setSeriesPaint(0, Color.RED); // Series 1 এর পয়েন্ট লাল হবে
plot.getRenderer().setSeriesPaint(1, Color.BLUE); // Series 2 এর পয়েন্ট নীল হবে
plot.getRenderer().setSeriesShape(0, Shape.CIRCLE); // Series 1 এর পয়েন্ট গোলাকার হবে
plot.getRenderer().setSeriesShape(1, Shape.TRIANGLE); // Series 2 এর পয়েন্ট ত্রিভুজ হবে
উদাহরণ: Grid Lines কাস্টমাইজ করা
// Grid Lines কাস্টমাইজ করা
plot.setDomainGridlinesVisible(true); // X-Axis এর gridlines প্রদর্শন করা
plot.setRangeGridlinesVisible(true); // Y-Axis এর gridlines প্রদর্শন করা
plot.setDomainGridlinePaint(Color.GRAY); // X-Axis এর gridlines এর রঙ পরিবর্তন
plot.setRangeGridlinePaint(Color.GRAY); // Y-Axis এর gridlines এর রঙ পরিবর্তন
সারাংশ
XYDataset ব্যবহার করে JFreeChart-এ Scatter Plot তৈরি করা অনেক সহজ। XYSeries ব্যবহার করে আপনি ডেটা পয়েন্ট তৈরি করতে পারেন এবং তারপর সেই ডেটা XYSeriesCollection এর মাধ্যমে Scatter Plot এ প্রদর্শন করতে পারেন। JFreeChart আপনাকে Scatter Plot কাস্টমাইজ করার জন্য অনেক অপশন দেয়, যেমন পয়েন্টের আকার, রঙ, গ্রিডলাইন এবং আরো অনেক কিছু। এটি ডেটা ভিজ্যুয়ালাইজেশনে অত্যন্ত কার্যকরী টুল হিসেবে কাজ করে।
JFreeChart একটি জনপ্রিয় লাইব্রেরি যা Java প্রোগ্রামিং ভাষায় গ্রাফ এবং চার্ট তৈরি করতে ব্যবহৃত হয়। Scatter Plot (স্ক্যাটার প্লট) ডেটার মধ্যে সম্পর্ক এবং ভ্যারিয়েবলের মধ্যে কোরিলেশন প্রদর্শন করতে ব্যবহৃত হয়। এটি একটি XY চার্ট যেখানে প্রতিটি ডেটা পয়েন্ট X এবং Y অক্ষের উপর প্লট করা হয়।
এখানে আমরা দেখব কিভাবে JFreeChart ব্যবহার করে Scatter Plot তৈরি করা যায় এবং কিভাবে Data Points এবং Color কাস্টমাইজ করা যায়।
Scatter Plot এর জন্য Dataset তৈরি করা
একটি Scatter Plot তৈরি করার জন্য আপনাকে একটি XYDataset তৈরি করতে হবে, যেখানে X এবং Y পয়েন্টের মান থাকবে। JFreeChart তে XYSeries এবং XYSeriesCollection ব্যবহার করে আমরা ডেটা তৈরি করতে পারি।
1. Scatter Plot তৈরি করা
উদাহরণ কোড:
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.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
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
PlotOrientation.VERTICAL, // Plot Orientation
true, // Legend
true // Tooltips
);
// ৩. 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. কোড ব্যাখ্যা:
- XYSeries: এটি একটি সিরিজ তৈরি করে, যেখানে X এবং Y মান যোগ করা হয়। এখানে
series.add(x, y)মেথড ব্যবহার করে ডেটা পয়েন্ট যোগ করা হয়েছে। - XYSeriesCollection: এটি একাধিক XYSeries ধারণ করে। আমরা একটিমাত্র সিরিজ ব্যবহার করছি এখানে, তবে একাধিক সিরিজও যোগ করা যেতে পারে।
- ChartPanel: এটি JFreeChart চার্টটিকে GUI উইন্ডোতে প্রদর্শন করার জন্য ব্যবহৃত হয়।
ChartPanelকে JFrame এর মধ্যে যোগ করে চার্ট প্রদর্শন করা হয়। - ChartFactory.createScatterPlot(): এটি Scatter Plot তৈরি করার জন্য একটি বিল্ট-ইন মেথড। এতে Dataset, Title, X এবং Y Axis এর লেবেল, এবং অন্যান্য কনফিগারেশন প্যারামিটার হিসেবে পাস করা হয়।
3. Data Points এবং Color কাস্টমাইজ করা
JFreeChart এর মাধ্যমে আপনি Scatter Plot এর Data Points এবং Color কাস্টমাইজ করতে পারেন। উদাহরণস্বরূপ, আপনি স্ক্যাটার প্লটের ডেটা পয়েন্টগুলির রঙ পরিবর্তন করতে পারেন এবং পয়েন্টগুলির আকার কাস্টমাইজ করতে পারেন।
উদাহরণ: Data Points এবং 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.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYPlotRenderer;
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
PlotOrientation.VERTICAL, // Plot Orientation
true, // Legend
true // Tooltips
);
// ৩. XYPlot এর রং এবং Data Points কাস্টমাইজ করা
XYPlot plot = scatterPlot.getXYPlot();
XYItemRenderer renderer = plot.getRenderer();
// Points এর রঙ পরিবর্তন
renderer.setSeriesPaint(0, Color.RED); // প্রথম সিরিজের পয়েন্টের রঙ পরিবর্তন
// Data Point এর আকার পরিবর্তন করা
renderer.setSeriesShape(0, new java.awt.geom.Ellipse2D.Double(-3, -3, 6, 6)); // Circle Shape
// ৪. 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;
}
}
কোডের ব্যাখ্যা:
- XYItemRenderer: এটি
XYPlotএর একটি অংশ যা প্লটের ডেটা পয়েন্টের রেন্ডারিং কাস্টমাইজ করে। আমরা এখানেsetSeriesPaint()মেথড দিয়ে সিরিজের রঙ পরিবর্তন করেছি। - setSeriesShape(): এই মেথডের মাধ্যমে আপনি ডেটা পয়েন্টের আকার কাস্টমাইজ করতে পারেন। উদাহরণস্বরূপ, এখানে একটি গোলাকার আকার (circle) সেট করা হয়েছে।
- Color: Color.RED ব্যবহার করে রঙ পরিবর্তন করা হয়েছে। আপনি এটি আপনার পছন্দ অনুযায়ী পরিবর্তন করতে পারেন (যেমন
Color.GREEN,Color.BLUEইত্যাদি)।
4. ফলাফল
কোডটি রান করলে একটি Scatter Plot প্রদর্শিত হবে যেখানে Red Colored Data Points থাকবে এবং Circle Shape হিসেবে প্রদর্শিত হবে। আপনি সহজেই ডেটার পয়েন্টগুলির আকার এবং রঙ কাস্টমাইজ করতে পারবেন এবং ভিজ্যুয়ালাইজেশনকে আরও আকর্ষণীয় করে তুলতে পারবেন।
সারাংশ
Scatter Plot তৈরি করতে JFreeChart এর XYDataset ব্যবহার করতে হয়, যা ডেটার মধ্যে সম্পর্ক প্রদর্শন করে। আপনি XYSeries ব্যবহার করে ডেটা পয়েন্ট যোগ করতে পারেন এবং XYSeriesCollection দিয়ে সেগুলি সংরক্ষণ করতে পারেন। JFreeChart দিয়ে আপনি Data Points এর রঙ, আকার এবং অন্যান্য গুণাবলী কাস্টমাইজ করতে পারেন, যা চার্টটিকে আরও আকর্ষণীয় এবং উপযোগী করে তোলে। XYItemRenderer ব্যবহার করে আপনি সিরিজের পয়েন্টের রঙ এবং আকার কাস্টমাইজ করতে পারেন এবং XYPlot ব্যবহার করে প্লটের শৈলী পরিবর্তন করতে পারেন।
JFreeChart লাইব্রেরি Java প্রোগ্রামিং ভাষায় চার্ট এবং গ্রাফ তৈরি করার জন্য ব্যবহৃত হয়। একে ব্যবহার করে আপনি বিভিন্ন ধরনের চার্ট তৈরি করতে পারেন, যেমন লাইন চার্ট, বার চার্ট, পাই চার্ট ইত্যাদি। চার্টের মধ্যে axes (অক্ষ) এবং labels (লেবেল) যোগ করা খুবই গুরুত্বপূর্ণ, কারণ এগুলি ডেটাকে সঠিকভাবে ব্যাখ্যা এবং ভিজ্যুয়ালাইজ করতে সাহায্য করে। এই গাইডে আমরা দেখব কিভাবে JFreeChart ব্যবহার করে Axes এবং Labels যোগ করা যায়।
1. Axes (অক্ষ) সম্পর্কে ধারণা
Axes বা অক্ষগুলি চার্টের মধ্যে X এবং Y অ্যাক্সিস হিসেবে কাজ করে, যা ডেটার মানের প্রতিনিধিত্ব করে। X অ্যাক্সিস সাধারণত ক্যাটেগরি বা সময়কে উপস্থাপন করে এবং Y অ্যাক্সিস সাধারণত পরিমাণ বা মান উপস্থাপন করে।
JFreeChart আপনাকে X এবং Y অ্যাক্সিস কাস্টমাইজ করার সুবিধা দেয়, যেমন:
- Tick Marks (অক্ষের চিহ্ন)
- Tick Labels (অক্ষের লেবেল)
- Axis Labels (অক্ষের শিরোনাম)
2. Labels (লেবেল) সম্পর্কে ধারণা
Labels হল চার্টের অংশ যা ডেটা পয়েন্টগুলিকে চিহ্নিত করে। এগুলি X এবং Y অ্যাক্সিসে প্রদর্শিত হয় এবং ডেটার মান বা ক্যাটেগরি বোঝায়। JFreeChart-এ আপনি X এবং Y অক্ষের জন্য লেবেল এবং বিভিন্ন সিরিজের জন্য লেবেল যোগ করতে পারেন।
3. Axes এবং Labels কাস্টমাইজেশন
JFreeChart ব্যবহার করে আপনি সহজেই Axes এবং Labels কাস্টমাইজ করতে পারেন। এই কাস্টমাইজেশন চার্টের ভিজ্যুয়াল অ্যাপিয়ারেন্স উন্নত করতে সাহায্য করে।
3.1 X এবং Y অ্যাক্সিস এর Labels যোগ করা
উদাহরণ: Line Chart এর জন্য Axes এবং Labels যোগ করা
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.ValueMarker;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.Plot;
import javax.swing.*;
public class LineChartWithAxesLabels {
public static void main(String[] args) {
// ডেটাসেট তৈরি
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(1.0, "Series1", "Jan");
dataset.addValue(4.0, "Series1", "Feb");
dataset.addValue(3.0, "Series1", "Mar");
dataset.addValue(5.0, "Series1", "Apr");
// Line Chart তৈরি
JFreeChart chart = ChartFactory.createLineChart(
"Sales Data", // Chart Title
"Month", // X-Axis Label
"Sales", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL,
true, // Include legend
true, // Tooltips
false // URLs
);
// X ও Y অক্ষের কাস্টমাইজেশন
CategoryPlot plot = (CategoryPlot) chart.getPlot();
CategoryAxis xAxis = plot.getDomainAxis();
xAxis.setLabel("Months"); // X-Axis Label
xAxis.setTickLabelFont(new java.awt.Font("Serif", java.awt.Font.PLAIN, 12));
NumberAxis yAxis = (NumberAxis) plot.getRangeAxis();
yAxis.setLabel("Revenue"); // Y-Axis Label
yAxis.setAutoRangeIncludesZero(true);
// 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);
}
}
ব্যাখ্যা:
- Dataset তৈরি:
DefaultCategoryDatasetব্যবহার করে একটি লাইন চার্টের জন্য ডেটাসেট তৈরি করা হয়েছে। এখানে "Series1" নামে একটি সিরিজ এবং "Jan", "Feb", "Mar", "Apr" মাসগুলি ক্যাটেগরি হিসেবে যোগ করা হয়েছে।
- Chart তৈরি:
ChartFactory.createLineChart()মেথড ব্যবহার করে একটি লাইন চার্ট তৈরি করা হয়েছে। এখানে X-Axis এর লেবেল হিসেবে "Month" এবং Y-Axis এর লেবেল হিসেবে "Sales" দেওয়া হয়েছে।
- Axes কাস্টমাইজেশন:
- X অ্যাক্সিস এবং Y অ্যাক্সিসের লেবেল এবং টিক লেবেল কাস্টমাইজ করা হয়েছে।
xAxis.setLabel("Months"): X অ্যাক্সিসের লেবেল সেট করা হয়েছে।yAxis.setLabel("Revenue"): Y অ্যাক্সিসের লেবেল সেট করা হয়েছে।
- X অ্যাক্সিস এবং Y অ্যাক্সিসের লেবেল এবং টিক লেবেল কাস্টমাইজ করা হয়েছে।
- ChartPanel:
ChartPanelতৈরি করা হয়েছে এবং সেটি JFrame এ প্রদর্শন করা হয়েছে, যাতে চার্টটি GUI তে প্রদর্শিত হয়।
3.2 Tick Marks এবং Tick Labels কাস্টমাইজেশন
Tick Marks এবং Tick Labels অ্যাক্সিসে ব্যবহারকারীদের জন্য মান বা ক্যাটেগরি দেখানোর কাজ করে। আপনি এগুলির ফন্ট, আকার বা রং পরিবর্তন করতে পারেন।
উদাহরণ:
xAxis.setTickLabelFont(new java.awt.Font("Serif", java.awt.Font.BOLD, 14)); // X-axis tick labels customization
yAxis.setTickLabelFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 12)); // Y-axis tick labels customization
এটি X এবং Y অ্যাক্সিসে টিক লেবেলগুলির ফন্ট এবং আকার কাস্টমাইজ করবে।
3.3 Value Marker যোগ করা
আপনি আপনার চার্টে value markers যোগ করতে পারেন, যা বিশেষ ডেটা পয়েন্ট বা মান দেখানোর জন্য ব্যবহার করা হয়।
উদাহরণ: Value Marker যোগ করা
ValueMarker marker = new ValueMarker(4.0); // 4.0 মানের একটি marker তৈরি
marker.setLabel("Threshold");
marker.setLabelFont(new java.awt.Font("Serif", java.awt.Font.BOLD, 12));
plot.addDomainMarker(marker); // X অ্যাক্সিসে marker যোগ করা
এটি X অ্যাক্সিসে 4.0 মানে একটি marker যোগ করবে এবং সেটি "Threshold" লেবেল সহ প্রদর্শিত হবে।
4. Conclusion
Axes এবং Labels হল JFreeChart এর গুরুত্বপূর্ণ অংশ, যা ডেটা ভিজুয়ালাইজেশনে সহায়ক। আপনি JFreeChart-এ X এবং Y অ্যাক্সিসের লেবেল এবং টিক লেবেল কাস্টমাইজ করতে পারেন এবং Value Markers যোগ করতে পারেন যাতে বিশেষ ডেটা পয়েন্টের গুরুত্ব নির্দেশ করা যায়। CategoryAxis, NumberAxis, এবং ValueMarker এর মাধ্যমে আপনি অ্যাক্সিস এবং চার্ট কাস্টমাইজেশন করতে পারেন। JFreeChart এর এই কাস্টমাইজেশন ফিচারগুলো আপনার চার্টকে আরও স্পষ্ট এবং তথ্যপূর্ণ করে তোলে।
JFreeChart একটি শক্তিশালী গ্রাফিকাল লাইব্রেরি যা Java-তে বিভিন্ন ধরনের চার্ট এবং গ্রাফ তৈরি করতে ব্যবহৃত হয়। এই লাইব্রেরি ব্যবহার করে আপনি বিভিন্ন পরিসংখ্যানগত ডেটা (Statistical Data) যেমন গড়, ডেভিয়েশন, হিস্টোগ্রাম, রিগ্রেশন ইত্যাদি সুন্দরভাবে ভিজ্যুয়ালাইজ করতে পারেন।
এখানে আমরা একটি Practical Example দেখব, যেখানে Statistical Data Visualization করার জন্য Bar Chart, Line Chart এবং Histogram ব্যবহার করা হবে।
1. Statistical Data Visualization Overview
Statistical Data Visualization ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং পরিসংখ্যানগত ফলাফলগুলো ভিজ্যুয়ালি প্রদর্শন করতে। এটি সিস্টেমের কার্যকারিতা, পারফরম্যান্স, বা এক্সপেরিমেন্টাল রেজাল্টের সম্পর্ক বুঝতে সাহায্য করে। সাধারণত পরিসংখ্যানের কিছু নির্দিষ্ট দিক যেমন:
- Mean (গড়): একটি ডেটাসেটের গড় মান।
- Standard Deviation (স্ট্যান্ডার্ড ডেভিয়েশন): ডেটাসেটের ভ্যারিয়েশন বা ছড়ানো মান।
- Frequency Distribution (ফ্রিকোয়েন্সি ডিসট্রিবিউশন): ডেটার বিভিন্ন মানের কতবার উপস্থিতি হচ্ছে।
- Regression (রিগ্রেশন): ডেটার মধ্যে সম্পর্ক বিশ্লেষণ।
2. Practical Example: Statistical Data Visualization
এখানে আমরা Bar Chart, Line Chart, এবং Histogram তৈরি করব, যাতে আমরা Statistical Data ভিজ্যুয়ালাইজ করতে পারি।
Step 1: ডেটাসেট তৈরি করা
ধরা যাক, আমাদের কাছে একটি শিক্ষার্থীদের পরীক্ষার ফলাফল রয়েছে। আমরা বিভিন্ন শিক্ষার্থীর নাম এবং তাদের স্কোর সংরক্ষণ করব এবং সেই ডেটা থেকে বিভিন্ন ধরনের Statistical Visualization তৈরি করব।
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.category.DefaultCategoryDataset;
import org.jfree.data.histogram.HistogramDataset;
import org.jfree.chart.plot.PiePlot3D;
import javax.swing.*;
import java.awt.Color;
public class StatisticalDataVisualization {
public static void main(String[] args) {
// Dataset তৈরি
DefaultCategoryDataset barChartDataset = createBarChartDataset();
JFreeChart barChart = createBarChart(barChartDataset);
// Line Chart Dataset
DefaultCategoryDataset lineChartDataset = createLineChartDataset();
JFreeChart lineChart = createLineChart(lineChartDataset);
// Histogram Dataset
HistogramDataset histogramDataset = createHistogramDataset();
JFreeChart histogramChart = createHistogramChart(histogramDataset);
// Panels তৈরি
ChartPanel barChartPanel = new ChartPanel(barChart);
barChartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
ChartPanel lineChartPanel = new ChartPanel(lineChart);
lineChartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
ChartPanel histogramChartPanel = new ChartPanel(histogramChart);
histogramChartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame তৈরি
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new java.awt.GridLayout(3, 1));
frame.add(barChartPanel);
frame.add(lineChartPanel);
frame.add(histogramChartPanel);
frame.pack();
frame.setVisible(true);
}
// Bar Chart Dataset তৈরি
private static DefaultCategoryDataset createBarChartDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// Data set: Student Scores
dataset.addValue(85, "Score", "Alice");
dataset.addValue(92, "Score", "Bob");
dataset.addValue(78, "Score", "Charlie");
dataset.addValue(95, "Score", "David");
dataset.addValue(88, "Score", "Eve");
return dataset;
}
// Bar Chart তৈরি
private static JFreeChart createBarChart(DefaultCategoryDataset dataset) {
return ChartFactory.createBarChart(
"Student Scores", // Chart Title
"Student", // X-Axis Label
"Score", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL,
true, // Include legend
true, // Tooltips
false // URLs
);
}
// Line Chart Dataset তৈরি
private static DefaultCategoryDataset createLineChartDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// Data set: Student Progress Over Time
dataset.addValue(85, "Progress", "Week 1");
dataset.addValue(87, "Progress", "Week 2");
dataset.addValue(90, "Progress", "Week 3");
dataset.addValue(92, "Progress", "Week 4");
dataset.addValue(95, "Progress", "Week 5");
return dataset;
}
// Line Chart তৈরি
private static JFreeChart createLineChart(DefaultCategoryDataset dataset) {
return ChartFactory.createLineChart(
"Student Progress Over Time", // Chart Title
"Week", // X-Axis Label
"Score", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL,
true, // Include legend
true, // Tooltips
false // URLs
);
}
// Histogram Dataset তৈরি
private static HistogramDataset createHistogramDataset() {
HistogramDataset dataset = new HistogramDataset();
// Dataset: Exam Scores Frequency
double[] scores = {85, 92, 78, 95, 88, 91, 80, 89, 85, 93};
dataset.addSeries("Frequency", scores, 10);
return dataset;
}
// Histogram Chart তৈরি
private static JFreeChart createHistogramChart(HistogramDataset dataset) {
JFreeChart chart = ChartFactory.createHistogram(
"Exam Scores Frequency", // Chart Title
"Score", // X-Axis Label
"Frequency", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL
);
return chart;
}
}
3. কোড ব্যাখ্যা
- Bar Chart Dataset:
DefaultCategoryDatasetব্যবহার করে বার চার্টের ডেটা তৈরি করা হয়েছে। এখানে শিক্ষার্থীদের নাম এবং তাদের স্কোর দেওয়া হয়েছে।addValue()মেথড দিয়ে ডেটা যুক্ত করা হয়েছে।
- Line Chart Dataset:
DefaultCategoryDatasetআবার ব্যবহার করা হয়েছে যাতে লাইন চার্টের জন্য শিক্ষার্থীদের প্রগ্রেসের ডেটা প্রদর্শন করা যায়।
- Histogram Dataset:
HistogramDatasetব্যবহার করা হয়েছে পরীক্ষার স্কোরের ফ্রিকোয়েন্সি দেখানোর জন্য। এখানে একটি array ব্যবহার করে পরীক্ষার স্কোরের বিভিন্ন মান যুক্ত করা হয়েছে।
- JFreeChart তৈরি করা:
ChartFactory.createBarChart()মেথড দিয়ে বার চার্ট,ChartFactory.createLineChart()দিয়ে লাইন চার্ট এবংChartFactory.createHistogram()দিয়ে হিস্টোগ্রাম তৈরি করা হয়েছে।
- ChartPanel:
- প্রতিটি চার্ট একটি
ChartPanelএ বসানো হয়েছে এবং JFrame এর মধ্যে দেখানোর জন্য GridLayout ব্যবহৃত হয়েছে।
- প্রতিটি চার্ট একটি
4. ফলাফল
কোডটি রান করলে তিনটি গ্রাফ একসাথে প্রদর্শিত হবে:
- একটি Bar Chart যা শিক্ষার্থীদের স্কোর দেখাবে।
- একটি Line Chart যা শিক্ষার্থীদের সময়ের সাথে প্রগ্রেস দেখাবে।
- একটি Histogram যা শিক্ষার্থীদের পরীক্ষার স্কোরের ফ্রিকোয়েন্সি দেখাবে।
সারাংশ
Statistical Data Visualization করতে JFreeChart খুবই কার্যকরী টুল। এটি বার চার্ট, লাইন চার্ট এবং হিস্টোগ্রাম সহ বিভিন্ন ধরনের গ্রাফ তৈরি করতে সাহায্য করে, যা পরিসংখ্যানগত ডেটার ভিজ্যুয়াল রিপ্রেজেন্টেশন সরবরাহ করে। এই গাইডে, আমরা দেখেছি কিভাবে JFreeChart ব্যবহার করে স্ট্যাটিস্টিকাল ডেটা ভিজ্যুয়ালাইজেশন করা যায় এবং ডেটার বিভিন্ন দিক যেমন স্কোর, প্রগ্রেস এবং ফ্রিকোয়েন্সি প্রদর্শন করা হয়। JFreeChart এর মাধ্যমে আপনি আরও গভীর বিশ্লেষণ এবং সিদ্ধান্ত নিতে পারবেন।
Read more