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 ব্যবহার করে প্লটের শৈলী পরিবর্তন করতে পারেন।
Read more