JFreeChart ব্যবহার করে ডেটা পয়েন্ট এবং নির্দিষ্ট রেঞ্জ (range) হাইলাইট করা সহজ এবং কার্যকরী। আপনি বিভিন্ন ডেটা পয়েন্টগুলিকে আলাদা করতে পারেন, কিংবা একটি নির্দিষ্ট রেঞ্জের মধ্যে ডেটা হাইলাইট করতে পারেন, যাতে গ্রাফের মধ্যে কিছু গুরুত্বপূর্ণ বা বৈশিষ্ট্যপূর্ণ তথ্য আরও স্পষ্টভাবে প্রদর্শিত হয়।
এখানে আমরা দেখবো কিভাবে Data Points এবং Specific Range হাইলাইট করা যায়।
১. Data Points Highlight করা
Data Points হাইলাইট করার জন্য XYPlot বা CategoryPlot ব্যবহার করে নির্দিষ্ট পয়েন্টের রঙ বা স্টাইল পরিবর্তন করা যেতে পারে। উদাহরণস্বরূপ, আপনি একটি Line Chart বা Scatter Plot এর মধ্যে একটি নির্দিষ্ট পয়েন্টের রঙ পরিবর্তন করতে পারেন, যাতে তা অন্য পয়েন্টগুলির তুলনায় স্পষ্ট হয়।
উদাহরণ: Data Points Highlight করা
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.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class HighlightDataPoints {
public static void main(String[] args) {
// XYSeries তৈরি করা
XYSeries series = new XYSeries("Data Points");
series.add(1, 10);
series.add(2, 20);
series.add(3, 30);
series.add(4, 40);
series.add(5, 50);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// XYLineChart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Data Points Highlight", // Chart Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset // Dataset
);
XYPlot plot = chart.getXYPlot();
// Renderer সেট করা
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
renderer.setSeriesLinesVisible(0, true); // লাইন প্রদর্শন করা
renderer.setSeriesShapesVisible(0, true); // পয়েন্ট প্রদর্শন করা
// Data Points Highlight করা
renderer.setSeriesShape(0, new java.awt.geom.Ellipse2D.Double(-3, -3, 6, 6)); // সিলেক্টেড পয়েন্টের আকার
renderer.setSeriesPaint(0, Color.RED); // পয়েন্টের রঙ পরিবর্তন
plot.setDomainPannable(true);
plot.setRangePannable(true);
plot.setDomainGridlinePaint(Color.LIGHT_GRAY);
plot.setRangeGridlinePaint(Color.LIGHT_GRAY);
plot.setDomainGridlinesVisible(true);
plot.setRangeGridlinesVisible(true);
// Custom renderer যোগ করা
plot.setRenderer(renderer);
// 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);
}
}
কোড ব্যাখ্যা:
- XYSeries ব্যবহার করে ডেটা পয়েন্টগুলো যোগ করা হয়েছে।
- XYLineAndShapeRenderer ব্যবহার করে ডেটা পয়েন্টের আকার এবং রঙ কাস্টমাইজ করা হয়েছে। পয়েন্টগুলোকে Red রঙে এবং আকারে Ellipse দিয়ে হাইলাইট করা হয়েছে।
২. Specific Range Highlight করা
Specific Range হাইলাইট করার জন্য, আপনি XYPlot বা CategoryPlot এর মাধ্যমে একটি নির্দিষ্ট রেঞ্জ বা ভ্যালুর মধ্যে ব্যাকগ্রাউন্ড রঙ পরিবর্তন করতে পারেন বা একটি শেডিং যোগ করতে পারেন।
উদাহরণ: Specific Range Highlight করা
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.Marker;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.plot.ValueMarker;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class HighlightSpecificRange {
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);
series.add(5, 30);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// XYLineChart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Highlight Specific Range", // Chart Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset // Dataset
);
XYPlot plot = chart.getXYPlot();
// Range Highlight করা (যেমন X = 2 থেকে 4 পর্যন্ত)
Marker rangeMarker = new ValueMarker(2);
rangeMarker.setPaint(Color.GREEN); // হাইলাইট রঙ
rangeMarker.setAlpha(0.5f); // অস্বচ্ছতা
plot.addDomainMarker(rangeMarker); // X-Axis রেঞ্জ হাইলাইট
// 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);
}
}
কোড ব্যাখ্যা:
- ValueMarker ব্যবহার করে নির্দিষ্ট একটি রেঞ্জ (এখানে X = 2 থেকে 4 পর্যন্ত) হাইলাইট করা হয়েছে।
- Marker.setPaint() ব্যবহার করে হাইলাইটের রঙ Green করা হয়েছে এবং Alpha সেট করে অস্বচ্ছতা নির্ধারণ করা হয়েছে।
Data Points এবং Specific Range হাইলাইট করার জন্য অন্যান্য কাস্টমাইজেশন
Panning এবং Zooming: আপনি XYPlot এ panning এবং zooming অপশন সক্রিয় করতে পারেন যাতে ব্যবহারকারীরা চার্টের মধ্যে পছন্দসই অংশে জুম ইন বা আউট করতে পারে।
plot.setDomainPannable(true); plot.setRangePannable(true);Text Annotations: আপনি Data Points বা Ranges এর পাশে টেক্সট অ্যানোটেশন যোগ করতে পারেন।
plot.addAnnotation(new XYTextAnnotation("Data Point", 3, 20));Shading Specific Ranges: আপনি নির্দিষ্ট রেঞ্জের মধ্যে একটি শেড বা ব্যাকগ্রাউন্ড রঙ যোগ করতে পারেন।
plot.setBackgroundPaint(Color.LIGHT_GRAY); // পুরো গ্রাফের ব্যাকগ্রাউন্ড রঙ পরিবর্তন
সারসংক্ষেপ
JFreeChart-এ Data Points এবং Specific Range হাইলাইট করা একটি কার্যকরী উপায় ডেটা বিশ্লেষণ এবং ভিজুয়ালাইজেশন উন্নত করার জন্য। আপনি XYPlot বা CategoryPlot এর মাধ্যমে গ্রাফের নির্দিষ্ট ডেটা পয়েন্ট এবং রেঞ্জে বিভিন্ন কাস্টমাইজেশন করতে পারেন। এর মধ্যে রয়েছে পয়েন্টের আকার বা রঙ পরিবর্তন, গ্রিডলাইন কাস্টমাইজ করা, রেঞ্জ হাইলাইট করা এবং অন্যান্য ভিজ্যুয়াল উপাদানগুলি পরিবর্তন করা।
Read more