Custom Renderer হল JFreeChart এর একটি শক্তিশালী কাস্টমাইজেশন ফিচার যা আপনাকে চার্টের বিভিন্ন উপাদান যেমন বার, পয়েন্ট, লাইন ইত্যাদির শৈলী কাস্টমাইজ করতে সাহায্য করে। এটি ব্যবহৃত হয় যখন আপনি ডিফল্ট রেন্ডারিং আচরণ পরিবর্তন করতে চান, যেমন রঙ, শেপ, লাইন স্টাইল বা পয়েন্টের আকার পরিবর্তন করা।
JFreeChart এ Renderer হলো সেই অংশ যা প্লটের ডেটাকে ভিজুয়ালি প্রদর্শন করে। CategoryPlot বা XYPlot এর জন্য একটি Renderer কাস্টমাইজ করা যায়। এই Renderer-এর মাধ্যমে আপনি BarChart, LineChart, ScatterPlot ইত্যাদি চার্টের স্টাইল কাস্টমাইজ করতে পারেন।
Custom Renderer তৈরি এবং ব্যবহার করা
এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি Bar Chart এর জন্য কাস্টম Renderer তৈরি করা হয়েছে।
উদাহরণ: Custom BarRenderer
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.GradientPaintTransformType;
import org.jfree.ui.RefineryUtilities;
import javax.swing.*;
import java.awt.*;
public class CustomRendererExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Category 1", "Jan");
dataset.addValue(20, "Category 1", "Feb");
dataset.addValue(30, "Category 1", "Mar");
// চার্ট তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Custom Bar Chart", // চার্টের শিরোনাম
"Month", // এক্স-অক্ষের নাম
"Value", // ওয়াই-অক্ষের নাম
dataset, // ডেটাসেট
org.jfree.chart.plot.PlotOrientation.VERTICAL,
true, // লেজেন্ড দেখানো
true, // টুলটিপস
false // URL সমর্থন
);
// Custom BarRenderer তৈরি করা
BarRenderer renderer = new BarRenderer();
// ব্যার রেন্ডারারের জন্য রঙ কাস্টমাইজেশন
renderer.setSeriesPaint(0, new GradientPaint(0.0f, 0.0f, Color.BLUE, 0.0f, 0.0f, Color.GREEN));
// ক্যাটেগরি প্লটে রেন্ডারার সেট করা
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setRenderer(renderer);
// চার্ট প্যানেল তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট দেখানো
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- BarRenderer: এটি CategoryPlot-এর জন্য একটি কাস্টম রেন্ডারার। আমরা এখানে ব্যারগুলির জন্য একটি গ্রেডিয়েন্ট রঙ ব্যবহার করেছি।
- setSeriesPaint(): এটি ব্যবহার করে আপনি একটি সিরিজের জন্য রঙ সেট করতে পারেন। এখানে আমরা প্রথম সিরিজের জন্য একটি গ্রেডিয়েন্ট পেইন্ট ব্যবহার করেছি যা Blue থেকে Green এ পরিবর্তিত হবে।
- GradientPaint: এটি ব্যবহার করে আপনি একাধিক রঙের পরিবর্তন তৈরি করতে পারেন, যেমন ব্যারগুলোতে গ্রেডিয়েন্ট রঙ।
Custom Renderer এর মাধ্যমে XYPlot এর কাস্টমাইজেশন
XYPlot ব্যবহার করে Line Chart বা Scatter Plot এর জন্য কাস্টম রেন্ডারার তৈরি করা যায়। এই রেন্ডারারটি বিভিন্ন পয়েন্টের শেপ, রঙ বা স্টাইল কাস্টমাইজ করতে সাহায্য করে।
উদাহরণ: Custom XY Line Renderer
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 CustomXYRendererExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
XYSeries series = new XYSeries("XY Data");
series.add(1.0, 5.0);
series.add(2.0, 4.0);
series.add(3.0, 3.0);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// XY Line Chart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Custom XY Line Chart", // চার্টের শিরোনাম
"X", // এক্স-অক্ষের নাম
"Y", // ওয়াই-অক্ষের নাম
dataset // ডেটাসেট
);
// Custom XY Line Renderer তৈরি করা
XYPlot plot = (XYPlot) chart.getPlot();
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
renderer.setSeriesLinesVisible(0, true); // সিরিজের লাইন দৃশ্যমান
renderer.setSeriesShapesVisible(0, true); // সিরিজের শেপ দৃশ্যমান
// পয়েন্টের শেপ এবং রঙ কাস্টমাইজ করা
renderer.setSeriesShape(0, Shape.TRIANGLE); // পয়েন্টের শেপ
renderer.setSeriesPaint(0, Color.RED); // পয়েন্টের রঙ
// রেন্ডারার প্লটে সেট করা
plot.setRenderer(renderer);
// চার্ট প্যানেল তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট দেখানো
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- XYLineAndShapeRenderer: এটি XYPlot এর জন্য একটি রেন্ডারার, যা লাইন এবং শেপ কাস্টমাইজ করতে সক্ষম।
- setSeriesShape(): এটি পয়েন্টের শেপ কাস্টমাইজ করতে ব্যবহৃত হয়। এখানে আমরা TRIANGLE শেপ ব্যবহার করেছি।
- setSeriesPaint(): এটি পয়েন্টের রঙ কাস্টমাইজ করার জন্য ব্যবহৃত হয়। এখানে আমরা RED রঙ ব্যবহার করেছি।
- setSeriesLinesVisible() এবং setSeriesShapesVisible(): এটি লাইন এবং শেপের দৃশ্যমানতা কাস্টমাইজ করে।
Custom Renderer এর মাধ্যমে অন্যান্য কাস্টমাইজেশন
Line Styles: আপনি লাইন স্টাইল (যেমন সলিড, ড্যাশড) কাস্টমাইজ করতে পারেন।
renderer.setSeriesStroke(0, new BasicStroke(2.0f)); // লাইন স্ট্রোকের আকার পরিবর্তনPoint Shapes: বিভিন্ন পয়েন্টের শেপ কাস্টমাইজ করা যায়, যেমন circle, square, triangle ইত্যাদি।
renderer.setSeriesShape(0, Shape.CIRCLE); // পয়েন্টের শেপ পরিবর্তনBar Colors: Bar Chart এর ক্ষেত্রে, আপনি প্রতিটি বার বা সিরিজের রঙ কাস্টমাইজ করতে পারেন।
renderer.setSeriesPaint(0, new Color(255, 0, 0)); // সিরিজের রঙ কাস্টমাইজTransparency: গ্রাফের পয়েন্ট বা বারগুলির transparency কাস্টমাইজ করা যেতে পারে।
renderer.setSeriesPaint(0, new Color(255, 0, 0, 128)); // আংশিক স্বচ্ছ রঙ
সারসংক্ষেপ
Custom Renderer তৈরি এবং ব্যবহার করা JFreeChart এর মাধ্যমে চার্ট কাস্টমাইজেশনের একটি শক্তিশালী উপায়। আপনি Bar Chart, Line Chart, বা XY Plot এর রেন্ডারিং স্টাইল কাস্টমাইজ করে রঙ, শেপ, লাইন স্টাইল, পয়েন্ট আকার ইত্যাদি পরিবর্তন করতে পারেন। Custom Renderer এর মাধ্যমে আপনি ব্যবহারকারীর জন্য আরো আকর্ষণীয় এবং ইন্টারেক্টিভ ডেটা ভিজুয়ালাইজেশন তৈরি করতে পারবেন।
Read more