Interactive এবং Printable Reports তৈরি

JFreeChart এর জন্য Reporting এবং Dashboard তৈরি - জেফ্রিচার্ট (JFreeChart) - Big Data and Analytics

356

JFreeChart লাইব্রেরি ব্যবহার করে আপনি Interactive এবং Printable Reports তৈরি করতে পারেন। Interactive reports ব্যবহারকারীদের চার্টের সাথে সরাসরি ইন্টারঅ্যাক্ট করার সুযোগ দেয়, যেমন মাউস ক্লিক, হোভার বা কীবোর্ড ইনপুটের মাধ্যমে ডেটার বিস্তারিত বিশ্লেষণ করা। অন্যদিকে, Printable Reports ব্যবহারকারীদের জন্য একটি প্রিন্টেবল বা PDF ফরম্যাটে ডেটা ভিজুয়ালাইজেশন তৈরি করতে সহায়ক।

এখানে আমরা দেখব কিভাবে Interactive এবং Printable reports তৈরি করা যায় JFreeChart এর মাধ্যমে।


1. Interactive Reports তৈরি করা

Interactive Reports এর মাধ্যমে ব্যবহারকারীরা চার্টের সাথে সরাসরি ইন্টারঅ্যাক্ট করতে পারে, যেমন ডেটা পয়েন্ট ক্লিক করা, মাউস হোভার করা, বা কাস্টম ফিল্টার প্রয়োগ করা।

Interactive Report উদাহরণ: Mouse Event Handling

এই উদাহরণে, আমরা MouseListener ব্যবহার করে একটি Interactive Bar Chart তৈরি করব যেখানে ব্যবহারকারীরা চার্টের পয়েন্টে ক্লিক করে ডেটা দেখতে পারবে।

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class InteractiveReportExample {
    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 Data",           // চার্টের শিরোনাম
                "Month",                // এক্স-অক্ষের নাম
                "Sales (in units)",     // ওয়াই-অক্ষের নাম
                dataset,                // ডেটাসেট
                PlotOrientation.VERTICAL, true, true, false);

        // MouseListener দিয়ে ইন্টারঅ্যাকটিভ ফিচার যোগ করা
        chart.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                int x = e.getX();
                int y = e.getY();
                JOptionPane.showMessageDialog(null, "Mouse clicked at X: " + x + " Y: " + y);
            }
        });

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

ব্যাখ্যা:

  • MouseAdapter ব্যবহার করে মাউস ক্লিক ইভেন্ট হ্যান্ডল করা হয়েছে, যেখানে চার্টের পয়েন্টে ক্লিক করলে তার X এবং Y পজিশন দেখানো হয়।
  • এই ইন্টারঅ্যাকটিভ ফিচারটি ব্যবহারকারীকে চার্টের সাথে সরাসরি যোগাযোগ করার সুযোগ দেয়।

2. Printable Reports তৈরি করা

JFreeChart ব্যবহার করে Printable Reports তৈরি করা যায়, যার মাধ্যমে আপনি চার্টকে প্রিন্টযোগ্য ফরম্যাটে (যেমন PDF বা প্রিন্ট) তৈরি করতে পারেন। JFreeChart ChartPanel ক্লাসের print() পদ্ধতি ব্যবহার করে এটি করতে সহায়ক।

Printable Report উদাহরণ

এই উদাহরণে, আমরা JFreeChart চার্ট প্রিন্ট করার জন্য Printable ফিচার ব্যবহার করব।

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.awt.print.PrinterException;
import java.awt.print.PrintJob;

public class PrintableReportExample {
    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 Data",           // চার্টের শিরোনাম
                "Month",                // এক্স-অক্ষের নাম
                "Sales (in units)",     // ওয়াই-অক্ষের নাম
                dataset,                // ডেটাসেট
                PlotOrientation.VERTICAL, true, true, false);

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

        // প্রিন্ট করার জন্য চার্ট প্যানেল প্রিন্ট করা
        try {
            chartPanel.print(); // চার্টটি প্রিন্ট করা
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • chartPanel.print() পদ্ধতি ব্যবহার করে আপনি চার্টকে সরাসরি প্রিন্ট করতে পারবেন।
  • এটি আপনাকে চার্টের একটি hardcopy তৈরি করতে সহায়ক, যা পরে প্রিন্টারে পাঠানো যেতে পারে।

3. PDF ফরম্যাটে Printable Reports তৈরি করা

JFreeChart এর মাধ্যমে PDF ফরম্যাটে রিপোর্ট তৈরি করতে, আপনি iText লাইব্রেরি ব্যবহার করতে পারেন। iText একটি শক্তিশালী লাইব্রেরি যা আপনাকে PDF ফাইল তৈরি করতে সাহায্য করে।

iText লাইব্রেরি যোগ করা

Maven ব্যবহারকারী হলে, আপনাকে pom.xml ফাইলে এই ডিপেনডেন্সি যুক্ত করতে হবে:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext7-core</artifactId>
    <version>7.1.15</version>
</dependency>

PDF রিপোর্ট তৈরি উদাহরণ

import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

import java.io.FileOutputStream;
import java.io.IOException;

public class PDFReportExample {
    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 Data",  // Chart Title
                "Month",       // X-Axis Label
                "Sales",       // Y-Axis Label
                dataset,       // Dataset
                PlotOrientation.VERTICAL, true, true, false);

        // PDF Document তৈরি করা
        Document document = new Document();
        try {
            PdfWriter.getInstance(document, new FileOutputStream("SalesReport.pdf"));
            document.open();
            document.add(new Paragraph("Sales Data Report"));
            // চার্টের ইমেজ পেতে JFreeChart থেকে
            chart.createBufferedImage(500, 300);
            document.add(new Paragraph("Chart Image"));
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • iText লাইব্রেরি ব্যবহার করে আমরা একটি PDF তৈরি করেছি এবং এতে JFreeChart এর ছবি যুক্ত করেছি।
  • chart.createBufferedImage(500, 300) ব্যবহার করে চার্টের একটি ইমেজ তৈরি করা হয়েছে, যা PDF ফাইলের মধ্যে যোগ করা হয়েছে।

4. Interactive Filtering Reports

আপনি যদি interactive filtering চান, অর্থাৎ ব্যবহারকারীদের ডেটা ফিল্টার করার সুযোগ দিতে চান, তবে একটি ComboBox বা Slider ব্যবহার করে ডেটার অংশ নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, একটি ComboBox ব্যবহার করে আপনি একটি নির্দিষ্ট মাসের বিক্রয় তথ্য দেখতে পারেন।

Interactive Filtering উদাহরণ

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class InteractiveFilteringExample {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "Sales", "Jan");
        dataset.addValue(20, "Sales", "Feb");
        dataset.addValue(30, "Sales", "Mar");

        // চার্ট তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Sales Data",     // Chart Title
                "Month",          // X-Axis Label
                "Sales",          // Y-Axis Label
                dataset,          // Dataset
                PlotOrientation.VERTICAL, true, true, false);

        // চার্ট প্যানেল তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        // ComboBox এর মাধ্যমে ডেটা ফিল্টার করার অপশন
        JComboBox<String> monthComboBox = new JComboBox<>(new String[]{"Jan", "Feb", "Mar"});
        monthComboBox.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String selectedMonth = (String) monthComboBox.getSelectedItem();
                // নির্দিষ্ট মাসের জন্য ডেটা আপডেট করা
                if (selectedMonth.equals("Jan")) {
                    dataset.setValue(10, "Sales", "Jan");
                } else if (selectedMonth.equals("Feb")) {
                    dataset.setValue(20, "Sales", "Feb");
                } else {
                    dataset.setValue(30, "Sales", "Mar");
                }
            }
        });

        // JFrame তৈরি করা
        JFrame frame = new JFrame();
        frame.setLayout(new BorderLayout());
        frame.add(chartPanel, BorderLayout.CENTER);
        frame.add(monthComboBox, BorderLayout.SOUTH);
        frame.pack();
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • JComboBox ব্যবহার করে ব্যবহারকারীদের একটি মাস নির্বাচন করার সুযোগ দেওয়া হয়েছে।
  • ActionListener এর মাধ্যমে মাস নির্বাচন করলে ডেটাসেট আপডেট হবে এবং চার্টটি রিফ্রেশ হবে।

সারসংক্ষেপ

JFreeChart এর মাধ্যমে আপনি Interactive Reports এবং Printable Reports তৈরি করতে পারেন। Interactive Reports এর মাধ্যমে আপনি মাউস ক্লিক, কীবোর্ড ইনপুট, অথবা কাস্টম ফিল্টার প্রয়োগ করে ডেটা ভিজুয়ালাইজেশন করতে পারেন, এবং Printable Reports এর মাধ্যমে আপনি সরাসরি চার্ট প্রিন্ট করতে পারেন বা PDF ফরম্যাটে রপ্তানি করতে পারেন। iText লাইব্রেরি ব্যবহার করে PDF Reports তৈরি করা সম্ভব এবং JComboBox অথবা Slider ব্যবহার করে ইন্টারঅ্যাকটিভ ফিল্টারিং করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...