Renderer Customization এর মাধ্যমে Complex Chart তৈরি

Custom Renderers এবং Drawing - জেফ্রিচার্ট (JFreeChart) - Big Data and Analytics

359

JFreeChart একটি শক্তিশালী গ্রাফিক্যাল লাইব্রেরি যা ডেটা ভিজুয়ালাইজেশন তৈরি করার জন্য ব্যবহৃত হয়। Renderer Customization ব্যবহার করে আপনি JFreeChart-এর গ্রাফিক্স রেন্ডারিং স্টাইল কাস্টমাইজ করতে পারেন, যা আপনাকে আরও জটিল বা বিশেষ ধরনের চার্ট তৈরি করার সুযোগ দেয়। এই টিউটোরিয়ালে, আমরা Renderer Customization এর সাহায্যে Complex Charts তৈরি করার প্রক্রিয়া দেখব।

Renderer Customization

Renderer হল সেই অংশ যা চার্টের গ্রাফিক্যাল উপস্থাপনায় ব্যবহৃত হয়। এটি নির্ধারণ করে যে কোন ডেটা কীভাবে প্রদর্শিত হবে (যেমন রঙ, স্টাইল, প্যাটার্ন, বা আকার)। JFreeChart-এ CategoryPlot, XYPlot, বা PiePlot এর মতো বিভিন্ন প্লট সিস্টেমে রেন্ডারার কাস্টমাইজ করা যায়।

১. Category Plot Rendering (Bar, Line, বা Area Charts)

CategoryPlot হল সাধারণত Bar Chart, Line Chart, বা Area Chart-এ ব্যবহৃত প্লট। আপনি CategoryRenderer বা BarRenderer কাস্টমাইজ করে বিভিন্ন ধরনের complex rendering তৈরি করতে পারেন।

Bar Chart Renderer Customization উদাহরণ

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.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.awt.*;

public class BarChartRendererCustomizationExample {

    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(
                "Sales for the First Quarter",   // চার্টের শিরোনাম
                "Month",                         // এক্স-অক্ষের নাম
                "Sales (in units)",              // ওয়াই-অক্ষের নাম
                dataset,                         // ডেটাসেট
                PlotOrientation.VERTICAL,        // প্লট অরিয়েন্টেশন
                true,                            // লেজেন্ড প্রদর্শন
                true,                            // টুলটিপস
                false                            // URL সমর্থন
        );

        // BarRenderer কাস্টমাইজ করা
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        
        // বার গুলি সবুজে রঙ করা
        renderer.setSeriesPaint(0, Color.GREEN);

        // বারগুলির মধ্যে ফাঁকা জায়গা কমানো
        renderer.setItemMargin(0.0);

        // চার্ট প্যানেল তৈরি করা
        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 ব্যবহার করা হয়েছে, যার মাধ্যমে বারগুলির রঙ পরিবর্তন করা হয়েছে এবং item margin কমানো হয়েছে।
  • renderer.setSeriesPaint(0, Color.GREEN) এর মাধ্যমে প্রথম সিরিজের বারগুলোকে সবুজ করা হয়েছে।

২. XY Plot Rendering (Scatter, Line, বা Area Charts)

XYPlot বিভিন্ন XY Chart-এ ব্যবহৃত হয়, যেমন Line Chart, Scatter Plot, বা Area Chart। আপনি XYLineAndShapeRenderer বা XYAreaRenderer ব্যবহার করে এই ধরনের চার্টগুলির রেন্ডারিং কাস্টমাইজ করতে পারেন।

XY Line Chart Renderer Customization উদাহরণ

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 XYLineChartRendererCustomizationExample {

    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        XYSeries series1 = new XYSeries("Series 1");
        series1.add(1.0, 2.0);
        series1.add(2.0, 3.0);
        series1.add(3.0, 5.0);
        XYSeriesCollection dataset = new XYSeriesCollection(series1);

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createXYLineChart(
                "XY Line Chart Example",   // চার্টের শিরোনাম
                "X-Axis",                 // এক্স-অক্ষের নাম
                "Y-Axis",                 // ওয়াই-অক্ষের নাম
                dataset                   // ডেটাসেট
        );

        // XYLineAndShapeRenderer কাস্টমাইজ করা
        XYPlot plot = (XYPlot) chart.getPlot();
        XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
        plot.setRenderer(0, renderer);
        
        // লাইন রঙ কাস্টমাইজ করা (লাল)
        renderer.setSeriesPaint(0, Color.RED);

        // লাইন স্টাইল কাস্টমাইজ করা (ড্যাশড লাইন)
        renderer.setSeriesStroke(0, new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 1.0f, new float[] {10.0f}, 0.0f));

        // চার্ট প্যানেল তৈরি করা
        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 ব্যবহার করে লাইন গ্রাফের রঙ এবং স্টাইল কাস্টমাইজ করা হয়েছে।
  • renderer.setSeriesPaint(0, Color.RED) দিয়ে লাইনটি লাল রঙের করা হয়েছে।
  • renderer.setSeriesStroke() ব্যবহার করে ড্যাশড লাইন স্টাইল প্রয়োগ করা হয়েছে।

৩. Pie Chart Rendering

Pie Chart-এ PieSectionRenderer ব্যবহার করে বিভিন্ন সেকশনের রঙ, আকার এবং স্টাইল কাস্টমাইজ করা যায়।

Pie Chart Renderer Customization উদাহরণ

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.renderer.category.PieSectionRenderer;
import org.jfree.data.general.DefaultPieDataset;

import javax.swing.*;
import java.awt.*;

public class PieChartRendererCustomizationExample {

    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("Java", 50);
        dataset.setValue("Python", 30);
        dataset.setValue("C++", 20);

        // পাই চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createPieChart(
                "Programming Language Usage", // চার্টের শিরোনাম
                dataset,                     // ডেটাসেট
                true,                        // লেজেন্ড প্রদর্শন
                true,                        // টুলটিপস
                false                        // URL সমর্থন
        );

        // PiePlot কাস্টমাইজ করা
        PiePlot plot = (PiePlot) chart.getPlot();
        plot.setSectionPaint("Java", Color.GREEN);   // Java সেকশন সবুজ
        plot.setSectionPaint("Python", Color.YELLOW); // Python সেকশন হলুদ
        plot.setSectionPaint("C++", Color.BLUE);      // C++ সেকশন নীল

        // চার্ট প্যানেল তৈরি করা
        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);
    }
}

ব্যাখ্যা:

  • PieSectionRenderer ব্যবহার করা হয়েছে সেকশনের রঙ পরিবর্তন করার জন্য। এখানে, প্রতিটি প্রোগ্রামিং ভাষার জন্য আলাদা রঙ নির্ধারণ করা হয়েছে।

Conclusion

JFreeChart এর Renderer Customization ব্যবহার করে আপনি ডেটা ভিজুয়ালাইজেশনকে আরও কার্যকরী এবং কাস্টমাইজড করতে পারেন। আপনি Bar Chart, XY Chart, বা Pie Chart রেন্ডারিং কাস্টমাইজ করে আপনার চার্টের ডিজাইন পরিবর্তন করতে পারেন। জটিল এবং আকর্ষণীয় চার্ট তৈরি করার জন্য Renderer কাস্টমাইজেশন একটি শক্তিশালী টুল। আপনি বিভিন্ন রঙ, আকার, লাইন স্টাইল এবং অন্যান্য ভিজুয়াল উপাদান কাস্টমাইজ করে আপনার চার্টকে আরও সুন্দর এবং ব্যবহারকারী-বান্ধব করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...