Custom Annotations এবং Overlays JFreeChart এ একটি অত্যন্ত কার্যকরী বৈশিষ্ট্য যা গ্রাফের মধ্যে অতিরিক্ত তথ্য যোগ করতে বা গ্রাফের নির্দিষ্ট অঞ্চলের ওপর কোনো চিহ্ন বা নির্দেশক প্রদর্শন করতে ব্যবহৃত হয়। এগুলি ডাটা ভিজ্যুয়ালাইজেশনের জন্য এক্সট্রা ইনফরমেশন বা ডাটা পয়েন্ট হাইলাইট করতে খুবই উপকারী।
এই সুবিধাগুলি ব্যবহার করে আপনি গ্রাফের নির্দিষ্ট অঞ্চলে, বিশেষ পয়েন্টে, বা নির্দিষ্ট সময়ের মধ্যে বিভিন্ন ধরনের অ্যানোটেশন বা নির্দেশক (annotations/overlays) প্রদর্শন করতে পারেন, যা আপনার ভিজ্যুয়ালাইজেশনকে আরও তথ্যপূর্ণ এবং ইন্টারেক্টিভ করে তোলে।
1. Custom Annotations
Custom Annotations হল একটি কাস্টম বার্তা বা ডাটা পয়েন্ট যা চার্টে নির্দিষ্ট স্থানে প্রদর্শিত হয়। এটি সাধারণত গ্রাফের উপর অতিরিক্ত তথ্য যোগ করতে ব্যবহৃত হয়, যেমন টেক্সট বা আকার।
Custom Annotation যোগ করার উদাহরণ:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.annotations.XYTextAnnotation;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class CustomAnnotationExample {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Custom Annotation Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(createChartPanel(createDataset()));
frame.pack();
frame.setVisible(true);
});
}
private static XYSeriesCollection createDataset() {
XYSeries series = new XYSeries("Data Series");
series.add(1, 5);
series.add(2, 7);
series.add(3, 6);
series.add(4, 9);
series.add(5, 10);
XYSeriesCollection dataset = new XYSeriesCollection(series);
return dataset;
}
private static ChartPanel createChartPanel(XYSeriesCollection dataset) {
JFreeChart chart = ChartFactory.createXYLineChart(
"XY Line Chart with Custom Annotation", // Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL,
true,
true,
false
);
// Add a custom annotation (text annotation)
XYTextAnnotation annotation = new XYTextAnnotation("Custom Annotation", 3, 6);
annotation.setFont(new Font("Arial", Font.BOLD, 14));
annotation.setPaint(Color.RED);
// Add the annotation to the chart
chart.getXYPlot().addAnnotation(annotation);
return new ChartPanel(chart);
}
}
কোডের ব্যাখ্যা:
- XYTextAnnotation: এটি একটি কাস্টম টেক্সট অ্যানোটেশন যা নির্দিষ্ট অবস্থানে প্রদর্শন করা হয়। এখানে আমরা
"Custom Annotation"টেক্সটটি (3, 6) কোঅর্ডিনেটের উপর দেখাচ্ছি। - setFont() এবং setPaint(): অ্যানোটেশনের লেখার ফন্ট এবং রঙ কাস্টমাইজ করা হয়েছে।
এই কোড চালানোর পর, আপনি একটি XY Line Chart দেখতে পাবেন যেখানে নির্দিষ্ট পয়েন্টে একটি কাস্টম অ্যানোটেশন (text) যোগ করা হয়েছে।
2. Overlays
Overlays হল অতিরিক্ত গ্রাফিক্যাল উপাদান যা চার্টে একটি গ্রাফ বা লাইন প্লটের উপর রাখা হয়। এটি গ্রাফের উপরে অতিরিক্ত তথ্য বা ডাটা প্রদর্শন করার জন্য ব্যবহৃত হয়, যেমন গ্রিড, লাইন, বা অন্য কোনো গ্রাফিক্যাল উপাদান।
Overlays যোগ করার উদাহরণ:
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.ValueMarker;
import org.jfree.chart.plot.Marker;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class OverlayExample {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("Overlay Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(createChartPanel(createDataset()));
frame.pack();
frame.setVisible(true);
});
}
private static XYSeriesCollection createDataset() {
XYSeries series = new XYSeries("Data Series");
series.add(1, 5);
series.add(2, 7);
series.add(3, 6);
series.add(4, 9);
series.add(5, 10);
XYSeriesCollection dataset = new XYSeriesCollection(series);
return dataset;
}
private static ChartPanel createChartPanel(XYSeriesCollection dataset) {
JFreeChart chart = ChartFactory.createXYLineChart(
"XY Line Chart with Overlay", // Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL,
true,
true,
false
);
// Create an overlay - ValueMarker
XYPlot plot = chart.getXYPlot();
Marker marker = new ValueMarker(3); // Add a vertical line at X = 3
marker.setPaint(Color.RED); // Set the color of the marker
plot.addDomainMarker(marker);
return new ChartPanel(chart);
}
}
কোডের ব্যাখ্যা:
- ValueMarker: এটি একটি গ্রাফিক্যাল উপাদান যা একটি নির্দিষ্ট স্থানে একটি লাইন বা মার্কার যোগ করে। এখানে, আমরা X-Axis এ ৩ পয়েন্টে একটি লাল রঙের ভারটিকাল লাইন যোগ করেছি।
- addDomainMarker(): এই মেথডটি মার্কার যোগ করার জন্য ব্যবহৃত হয়।
এটি একটি XY Line Chart তৈরি করবে যেখানে X-Axis এর ৩ পয়েন্টে একটি লাল রঙের ভারটিকাল লাইন বা মার্কার থাকবে।
3. Custom Annotations এবং Overlays এর ব্যবহারিক উদাহরণ
- Custom Annotations: আপনি কোন নির্দিষ্ট ডাটা পয়েন্ট বা সময়সীমায় কাস্টম টেক্সট বা বার্তা যোগ করতে পারেন। এটি কার্যকরী যখন আপনি বিশেষ কোন ঘটনা, লক্ষ্য বা ম্যার্কিং পয়েন্টগুলো হাইলাইট করতে চান।
- Overlays: গ্রাফিক্যাল উপাদান যেমন লাইন, মার্কার, বা অন্য কোনো চিহ্নকে গ্রাফে যোগ করা, যেমন সীমা নির্ধারণ, লক্ষ্য চিহ্নিতকরণ, বা ডাটা ট্রেন্ড হাইলাইট করা।
এটি বিশেষ করে ট্রেন্ড অ্যানালাইসিস, স্টক মার্কেট ভিজ্যুয়ালাইজেশন, ফাইনান্সিয়াল ডাটা বা ফিজিক্যাল সায়েন্স ডাটা বিশ্লেষণে ব্যবহার করা হয়, যেখানে বিশেষ পয়েন্ট বা অঞ্চল চিহ্নিত করা প্রয়োজন।
সারাংশ
JFreeChart এর মাধ্যমে Custom Annotations এবং Overlays যোগ করা একটি শক্তিশালী বৈশিষ্ট্য যা ডাটা ভিজ্যুয়ালাইজেশনকে আরও তথ্যপূর্ণ এবং ইন্টারেক্টিভ করে তোলে। আপনি চার্টের নির্দিষ্ট পয়েন্টে কাস্টম টেক্সট, গ্রাফিক্যাল মার্কার, এবং অন্যান্য ভিজ্যুয়াল এলিমেন্ট যোগ করতে পারেন যা ডাটা বিশ্লেষণের প্রক্রিয়াকে আরও সহজ এবং কার্যকর করে তোলে। JFreeChart এর এই বৈশিষ্ট্যগুলি বিশেষত তখন কার্যকরী যখন আপনি ডাটা ট্রেন্ড, স্ট্যাটিস্টিকাল পয়েন্ট, বা লক্ষ্য চিহ্নিত করতে চান।
Read more