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 এর ভিজ্যুয়াল অ্যাপিয়ারেন্স উন্নত করতে সাহায্য করে এবং আপনাকে ডেটা পয়েন্টগুলোর মাঝে স্পষ্ট পার্থক্য তুলে ধরতে সহায়তা করে।
Read more