Renderer এর মাধ্যমে Data Visualization কাস্টমাইজ করা

JFreeChart এর জন্য Dataset এবং Renderer কাস্টমাইজেশন - জেফ্রিচার্ট (JFreeChart) - Java Technologies

234

JFreeChart লাইব্রেরি Java এ ডেটা ভিজ্যুয়ালাইজেশন করার জন্য একটি শক্তিশালী টুল। Renderer হল JFreeChart এর একটি গুরুত্বপূর্ণ অংশ, যা বিভিন্ন উপাদান যেমন গ্রাফের লাইন, বার, পয়েন্ট ইত্যাদি কাস্টমাইজ করার জন্য ব্যবহৃত হয়। এটি আপনাকে চার্টের বিভিন্ন বৈশিষ্ট্য, যেমন রঙ, শেপ, শেডিং, আউটলাইন ইত্যাদি পরিবর্তন করতে সহায়তা করে।

এই গাইডে, আমরা দেখব কিভাবে Renderer ব্যবহার করে Data Visualization কাস্টমাইজ করা যায়, বিশেষভাবে Line Chart এবং Bar Chart এর ক্ষেত্রে।


1. Renderer কি?

Renderer হল JFreeChart এর অংশ যা চার্টের গ্রাফিক্যাল উপাদানগুলি প্রদর্শন করে। এটি বিভিন্ন সিরিজের lines, shapes, এবং bars কাস্টমাইজ করার জন্য ব্যবহৃত হয়। CategoryItemRenderer, XYItemRenderer, এবং XYLineAndShapeRenderer হল জেফ্রিচার্টে ব্যবহৃত কিছু প্রধান রেন্ডারার।

1.1 XYItemRenderer:

  • এটি XYChart (যেমন, লাইন চার্ট এবং স্ক্যাটার প্লট) রেন্ডার করার জন্য ব্যবহৃত হয়।

1.2 CategoryItemRenderer:

  • এটি CategoryChart (যেমন, বার চার্ট) রেন্ডার করার জন্য ব্যবহৃত হয়।

2. Line Chart কাস্টমাইজেশন Renderer ব্যবহার করে

2.1 XYLineAndShapeRenderer ব্যবহার করে Line Chart কাস্টমাইজেশন

একটি Line Chart তৈরি করার পর, আপনি XYLineAndShapeRenderer ব্যবহার করে সেই লাইন ও ডেটা পয়েন্টের শেপ এবং স্টাইল কাস্টমাইজ করতে পারেন।

উদাহরণ:

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
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.*;
import java.awt.geom.Ellipse2D;

public class LineChartRendererCustomization {

    public static JPanel createChartPanel() {
        // Data Series তৈরি করা
        XYSeries series = new XYSeries("Sales");
        series.add(1, 1000);
        series.add(2, 1200);
        series.add(3, 1500);
        series.add(4, 1800);
        series.add(5, 2000);

        XYSeriesCollection dataset = new XYSeriesCollection(series);

        // Line Chart তৈরি করা
        JFreeChart chart = ChartFactory.createXYLineChart(
                "Sales Over Time",         // Chart Title
                "Time",                    // X-Axis Label
                "Sales",                   // Y-Axis Label
                dataset,                   // Dataset
                PlotOrientation.VERTICAL,  // Plot Orientation
                true,                      // Show Legend
                true,                      // Tooltips
                false                      // URLs
        );

        // Plot এবং Renderer কাস্টমাইজ করা
        XYPlot plot = chart.getXYPlot();
        XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();

        // Line Style কাস্টমাইজ করা
        renderer.setSeriesLinesVisible(0, true);  // Line visible
        renderer.setSeriesShapesVisible(0, true); // Data points visible
        renderer.setSeriesShape(0, new Ellipse2D.Double(-3, -3, 6, 6)); // Data points shape (circle)
        renderer.setSeriesPaint(0, Color.BLUE);   // Line color

        // Renderer সেট করা
        plot.setRenderer(renderer);

        // Chart Panel তৈরি করা এবং JFrame এ যোগ করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        return chartPanel;
    }

    public static void main(String[] args) {
        // JFrame তৈরি করা
        JFrame frame = new JFrame("JFreeChart Line Chart with Custom Renderer");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(createChartPanel());
        frame.pack();
        frame.setVisible(true);
    }
}

2.2 কাস্টমাইজেশন ব্যাখ্যা:

  • Line Style: setSeriesLinesVisible(0, true) দিয়ে লাইন দৃশ্যমান করা হয়েছে।
  • Data Points Shape: setSeriesShape(0, new Ellipse2D.Double(-3, -3, 6, 6)) দিয়ে ডেটা পয়েন্টের শেপ কাস্টমাইজ করা হয়েছে, যা এখানে একটি বৃত্ত (circle)।
  • Line Color: setSeriesPaint(0, Color.BLUE) দিয়ে লাইনটির রঙ নীল করা হয়েছে।

3. Bar Chart কাস্টমাইজেশন Renderer ব্যবহার করে

CategoryItemRenderer ব্যবহার করে আপনি Bar Chart এর বিভিন্ন উপাদান কাস্টমাইজ করতে পারেন, যেমন বারগুলির রঙ, আকার, প্যাটার্ন ইত্যাদি।

উদাহরণ:

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 javax.swing.*;
import java.awt.*;

public class BarChartRendererCustomization {

    public static JPanel createChartPanel() {
        // Data Set তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(5, "Series1", "Category1");
        dataset.addValue(3, "Series1", "Category2");
        dataset.addValue(4, "Series1", "Category3");

        // Bar Chart তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales vs Expenses",         // Chart Title
                "Category",                  // X-Axis Label
                "Value",                     // Y-Axis Label
                dataset,                     // Dataset
                PlotOrientation.VERTICAL,    // Plot Orientation
                true,                        // Show Legend
                true,                        // Tooltips
                false                        // URLs
        );

        // Plot এবং Renderer কাস্টমাইজ করা
        CategoryPlot plot = chart.getCategoryPlot();
        BarRenderer renderer = new BarRenderer();

        // Bar এর রঙ কাস্টমাইজ করা
        renderer.setSeriesPaint(0, Color.GREEN);  // Bar color

        // Renderer সেট করা
        plot.setRenderer(renderer);

        // Chart Panel তৈরি করা এবং JFrame এ যোগ করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        return chartPanel;
    }

    public static void main(String[] args) {
        // JFrame তৈরি করা
        JFrame frame = new JFrame("JFreeChart Bar Chart with Custom Renderer");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(createChartPanel());
        frame.pack();
        frame.setVisible(true);
    }
}

3.1 কাস্টমাইজেশন ব্যাখ্যা:

  • Bar Color: renderer.setSeriesPaint(0, Color.GREEN) দিয়ে বারগুলির রঙ সবুজ করা হয়েছে।
  • Bar Size and Shape: আপনি বারগুলির আকার এবং শেপও কাস্টমাইজ করতে পারেন, তবে এখানে আমরা শুধু রঙ পরিবর্তন করেছি।

4. Renderer কাস্টমাইজেশন আরও উন্নত করতে

JFreeChart-এ Renderer এর মাধ্যমে অনেক ধরনের কাস্টমাইজেশন করা যায়, যেমন:

  1. বারগুলির শেপ পরিবর্তন:
    • renderer.setSeriesShape(0, new Rectangle2D.Double(0, 0, 10, 10));
  2. গ্রাফের গ্রিড লাইন কাস্টমাইজ:
    • plot.setDomainGridlinePaint(Color.RED); (গ্রিড লাইন রঙ পরিবর্তন)
  3. ডেটা পয়েন্টের শেপ এবং স্টাইল পরিবর্তন:
    • renderer.setSeriesShape(0, new Ellipse2D.Double(-5, -5, 10, 10));
    • renderer.setSeriesPaint(0, Color.YELLOW); (ডেটা পয়েন্টের রঙ পরিবর্তন)
  4. কাস্টম আউটলাইন:
    • renderer.setSeriesOutlinePaint(0, Color.BLACK);

সারাংশ

JFreeChart এর Renderer ব্যবহার করে আপনি Line Chart, Bar Chart এবং অন্যান্য গ্রাফিক্যাল উপাদানের কাস্টমাইজেশন করতে পারেন। এটি বিভিন্ন সিরিজের রঙ, আকার, শেপ, লাইন স্টাইল, ডেটা পয়েন্টের শেপ ইত্যাদি কাস্টমাইজ করার জন্য ব্যবহৃত হয়। XYLineAndShapeRenderer, BarRenderer, এবং অন্যান্য রেন্ডারার ব্যবহার করে আপনি আপনার চার্টের ভিজ্যুয়াল উপস্থাপনকে আপনার প্রোজেক্টের প্রয়োজন অনুযায়ী কাস্টমাইজ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...