JFreeChart লাইব্রেরি ব্যবহার করে চার্টের উপর Custom Annotations এবং Labels যোগ করা যায়, যা ডেটার নির্দিষ্ট অংশের উপর অতিরিক্ত তথ্য বা হাইলাইট প্রদর্শন করতে সহায়ক। এই কাস্টম অ্যানোটেশন এবং লেবেলগুলি বিভিন্ন ডেটা পয়েন্ট বা রেঞ্জের উপর বিশেষ দৃষ্টি আকর্ষণ করতে ব্যবহৃত হয়, যেমন বিশেষ মান, ইভেন্ট বা সময়সীমা চিহ্নিত করা।
এখানে আমরা ValueMarker এবং IntervalMarker ব্যবহার করে কাস্টম অ্যানোটেশন যোগ করা এবং কাস্টম লেবেল কিভাবে যুক্ত করতে হয় তা দেখবো।
১. ValueMarkers এবং IntervalMarkers এর ব্যবহার
ValueMarkers এবং IntervalMarkers মূলত চার্টের উপর একটি অনুভূমিক বা উল্লম্ব মার্কার তৈরি করতে ব্যবহৃত হয়, যা বিশেষ ডেটা পয়েন্ট বা রেঞ্জের অবস্থান চিহ্নিত করে।
ValueMarker এর ব্যবহার
ValueMarker সাধারণত একক একটি মান চিহ্নিত করতে ব্যবহৃত হয়। এটি অক্ষের (X বা Y) উপর একটি লাইনের মতো কাজ করে এবং নির্দিষ্ট মানে সেট করা যায়।
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.ValueMarker;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.Color;
public class ValueMarkerExample {
public static void main(String[] args) {
// XYSeries তৈরি করা
XYSeries series = new XYSeries("Data Points");
series.add(1, 10);
series.add(2, 15);
series.add(3, 20);
series.add(4, 25);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// XYChart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Data with ValueMarker", // Chart Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset // Dataset
);
XYPlot plot = chart.getXYPlot();
// ValueMarker তৈরি করা
ValueMarker marker = new ValueMarker(15); // Y=15 এ ValueMarker সেট করা
marker.setPaint(Color.RED); // মার্কারের রঙ লাল করা
marker.setLabel("Threshold"); // লেবেল যোগ করা
marker.setLabelPaint(Color.BLACK); // লেবেলের রঙ কালো করা
plot.addDomainMarker(marker); // XYPlot এ ValueMarker যোগ করা
// 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.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- ValueMarker তৈরি করা হয়েছে যেখানে Y=15 এ একটি লাইনে একটি মার্কার সেট করা হয়েছে।
- মার্কারের জন্য লেবেল এবং রঙ কাস্টমাইজ করা হয়েছে।
plot.addDomainMarker(marker)ব্যবহার করে XYPlot-এ এটি যোগ করা হয়েছে।
IntervalMarker এর ব্যবহার
IntervalMarker একটি রেঞ্জ চিহ্নিত করতে ব্যবহৃত হয়। এটি একাধিক মানের মধ্যে একটি সীমারেখা বা এলাকা চিহ্নিত করে, যেমন একটি নির্দিষ্ট সময়সীমা বা পরিসীমা।
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.IntervalMarker;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.Color;
public class IntervalMarkerExample {
public static void main(String[] args) {
// XYSeries তৈরি করা
XYSeries series = new XYSeries("Data Points");
series.add(1, 10);
series.add(2, 15);
series.add(3, 20);
series.add(4, 25);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// XYChart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Data with IntervalMarker", // Chart Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset // Dataset
);
XYPlot plot = chart.getXYPlot();
// IntervalMarker তৈরি করা
IntervalMarker intervalMarker = new IntervalMarker(2, 4); // X=2 এবং X=4 এর মধ্যে একটি রেঞ্জ
intervalMarker.setPaint(Color.GREEN); // মার্কারের রঙ সবুজ করা
intervalMarker.setAlpha(0.3f); // মার্কারের স্বচ্ছতা কাস্টমাইজ করা (0.0f থেকে 1.0f)
intervalMarker.setLabel("Important Range"); // লেবেল যোগ করা
intervalMarker.setLabelPaint(Color.BLACK); // লেবেলের রঙ কালো করা
plot.addDomainMarker(intervalMarker); // XYPlot এ IntervalMarker যোগ করা
// 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.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- IntervalMarker তৈরি করা হয়েছে যেখানে X=2 এবং X=4 এর মধ্যে একটি রেঞ্জ চিহ্নিত করা হয়েছে।
intervalMarker.setPaint(Color.GREEN)ব্যবহার করে মার্কারের রঙ সবুজ করা হয়েছে।plot.addDomainMarker(intervalMarker)ব্যবহার করে এটি XYPlot-এ যোগ করা হয়েছে।
২. Custom Annotations এবং Labels যোগ করা
Custom Annotations এবং Labels চার্টে অতিরিক্ত তথ্য প্রদান করতে ব্যবহৃত হয়, যেমন গ্রাফের কোনো নির্দিষ্ট পয়েন্টে একটি মন্তব্য বা লেবেল যোগ করা।
উদাহরণ: Custom Annotation (Text) যোগ করা
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.TextAnnotation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.Color;
public class CustomAnnotationExample {
public static void main(String[] args) {
// XYSeries তৈরি করা
XYSeries series = new XYSeries("Data Points");
series.add(1, 10);
series.add(2, 15);
series.add(3, 20);
series.add(4, 25);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// XYChart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Data with Custom Annotations", // Chart Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset // Dataset
);
XYPlot plot = chart.getXYPlot();
// Custom Annotation (Text) তৈরি করা
TextAnnotation annotation = new TextAnnotation("Important Point", 3, 20);
annotation.setFont(new java.awt.Font("SansSerif", java.awt.Font.BOLD, 14));
annotation.setPaint(Color.RED);
plot.addAnnotation(annotation); // XYPlot এ Annotation যোগ করা
// 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.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- TextAnnotation ব্যবহার করে একটি কাস্টম টেক্সট লেবেল যোগ করা হয়েছে, যা X=3, Y=20 পয়েন্টে প্রদর্শিত হবে।
- লেবেলটির ফন্ট এবং রঙ কাস্টমাইজ করা হয়েছে।
সারসংক্ষেপ
JFreeChart লাইব্রেরি ব্যবহার করে ValueMarkers এবং IntervalMarkers সহ Custom Annotations এবং Labels যোগ করা একটি শক্তিশালী উপায় চার্টের উপর অতিরিক্ত তথ্য বা হাইলাইট প্রদর্শন করতে। এই উপাদানগুলি ডেটার বিশেষ পয়েন্ট বা রেঞ্জের উপর দৃষ্টি আকর্ষণ করতে সহায়ক, যেমন কোনও নির্দিষ্ট মান বা সময়সীমা, যা ডেটার গভীর বিশ্লেষণ করতে সাহায্য করে।
Read more