Interactive Charts এবং Event Handling

জেফ্রিচার্ট (JFreeChart) - Java Technologies

336

JFreeChart Java এ ডেটা ভিজ্যুয়ালাইজেশনের জন্য একটি জনপ্রিয় এবং শক্তিশালী লাইব্রেরি। এটি বিভিন্ন ধরনের চার্ট তৈরি করতে সাহায্য করে, যেমন Line Chart, Bar Chart, Pie Chart, এবং আরও অনেক কিছু। JFreeChart এর মাধ্যমে আপনি Interactive Charts তৈরি করতে পারেন, যেখানে ব্যবহারকারী গ্রাফের মধ্যে মাউস ক্লিক বা হোভার করলে কিছু ইন্টারেকশন ঘটবে। পাশাপাশি, Event Handling ব্যবহার করে আপনি ব্যবহারকারীর ইন্টারঅ্যাকশনের প্রতি চার্টে প্রতিক্রিয়া যোগ করতে পারেন।

এই গাইডে, আমরা দেখব কিভাবে Interactive Charts তৈরি করা যায় এবং Event Handling এর মাধ্যমে ব্যবহারকারীর ইন্টারঅ্যাকশন পরিচালনা করা যায়।


1. Interactive Charts তৈরি করা

JFreeChart ইন্টারেকটিভিটি সমর্থন করে, যেমন Mouse Listener, Zooming, Panning এবং Tooltip ব্যবহারের মাধ্যমে চার্টের মধ্যে ইন্টারেকশন যোগ করা। এখানে আমরা একটি সাধারণ Interactive Chart তৈরি করব, যেখানে আপনি Zoom এবং Panning করতে পারবেন।

1.1. Zooming এবং Panning

JFreeChart তে Zooming এবং Panning এর মাধ্যমে আপনি চার্টের নির্দিষ্ট অংশে ফোকাস করতে পারেন। এটি XYPlot এবং ChartPanel এর মাধ্যমে করা যায়।

উদাহরণ: Zooming এবং Panning সহ XY 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.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;

public class InteractiveXYChart {

    public static JPanel createChartPanel() {
        // Dataset তৈরি করা
        XYSeries series = new XYSeries("Sample Data");
        series.add(1, 1);
        series.add(2, 4);
        series.add(3, 9);
        series.add(4, 16);
        series.add(5, 25);
        
        XYSeriesCollection dataset = new XYSeriesCollection(series);

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

        // XYPlot এর মাধ্যমে Zooming এবং Panning সক্রিয় করা
        XYPlot plot = chart.getXYPlot();
        plot.setDomainPannable(true);  // Enable panning along the X-axis
        plot.setRangePannable(true);   // Enable panning along the Y-axis

        // ChartPanel তৈরি করা এবং Zoom/Pan বৈশিষ্ট্য সক্রিয় করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
        chartPanel.setMouseWheelEnabled(true); // Enable zooming with mouse wheel
        chartPanel.setDomainZoomable(true);   // Enable zoom along the X-axis
        chartPanel.setRangeZoomable(true);    // Enable zoom along the Y-axis

        return chartPanel;
    }

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

ব্যাখ্যা:

  • setMouseWheelEnabled(true) মেথড দিয়ে আপনি মাউস হুইল দিয়ে Zooming সক্রিয় করতে পারেন।
  • setDomainPannable(true) এবং setRangePannable(true) ব্যবহার করে Panning সক্ষম করা হয়েছে।
  • setDomainZoomable(true) এবং setRangeZoomable(true) এর মাধ্যমে X এবং Y অ্যাক্সিসের জন্য জুম সক্রিয় করা হয়েছে।

2. Event Handling (Mouse Events)

JFreeChart এর মাধ্যমে আপনি ব্যবহারকারীর মাউস ক্লিক, মাউস মুভ, বা মাউস হোভার ইভেন্টগুলি হ্যান্ডল করতে পারেন। এর জন্য MouseListener এবং MouseMotionListener ব্যবহার করা হয়।

2.1. MouseListener ব্যবহার করে মাউস ক্লিক ইভেন্ট হ্যান্ডলিং

আপনি MouseListener ব্যবহার করে চার্টের উপর মাউস ক্লিক করার ইভেন্ট হ্যান্ডল করতে পারেন। উদাহরণস্বরূপ, একটি পয়েন্ট ক্লিক করলে তার মান প্রিন্ট করা।

উদাহরণ: Mouse Click Event Handling

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.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class MouseClickEventChart {

    public static JPanel createChartPanel() {
        // Dataset তৈরি করা
        XYSeries series = new XYSeries("Sample Data");
        series.add(1, 1);
        series.add(2, 4);
        series.add(3, 9);
        series.add(4, 16);
        series.add(5, 25);
        
        XYSeriesCollection dataset = new XYSeriesCollection(series);

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

        // ChartPanel তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        // MouseListener যোগ করা
        chartPanel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                // মাউস ক্লিক হলে এক্স এবং ওয়াই পজিশন প্রিন্ট করা
                System.out.println("Mouse clicked at: (" + e.getX() + ", " + e.getY() + ")");
            }
        });

        return chartPanel;
    }

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

ব্যাখ্যা:

  • MouseAdapter এবং mouseClicked() মেথড ব্যবহার করে আপনি মাউস ক্লিক ইভেন্ট হ্যান্ডল করতে পারেন।
  • e.getX() এবং e.getY() ব্যবহার করে আপনি মাউস ক্লিকের অবস্থান জানতে পারেন এবং প্রয়োজনে সেই পজিশনের সাথে সম্পর্কিত ডেটা প্রক্রিয়াকরণ করতে পারেন।

3. Mouse Motion Event Handling (Mouse Hover)

আপনি MouseMotionListener ব্যবহার করে মাউস হোভার (mouse hover) ইভেন্টও হ্যান্ডল করতে পারেন। এটি মূলত যখন ব্যবহারকারী চার্টের উপর মাউস রাখে তখন ঘটে।

উদাহরণ: Mouse Hover Event Handling

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseEvent;

public class MouseHoverEventChart {

    public static JPanel createChartPanel() {
        // Dataset তৈরি করা
        XYSeries series = new XYSeries("Sample Data");
        series.add(1, 1);
        series.add(2, 4);
        series.add(3, 9);
        series.add(4, 16);
        series.add(5, 25);
        
        XYSeriesCollection dataset = new XYSeriesCollection(series);

        // XY Chart তৈরি করা
        JFreeChart chart = ChartFactory.createXYLineChart(
                "Mouse Hover Event Chart", // Chart Title
                "X-Axis",                 // X-Axis Label
                "Y-Axis",                 // Y-Axis Label
                dataset,                  // Dataset
                org.jfree.chart.plot.PlotOrientation.VERTICAL, // Plot Orientation
                true,                     // Show Legend
                true,                     // Tooltips
                false                     // URLs
        );

        // ChartPanel তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        // MouseMotionListener যোগ করা
        chartPanel.addMouseMotionListener(new MouseMotionAdapter() {
            @Override
            public void mouseMoved(MouseEvent e) {
                // মাউস হোভার করলে পয়েন্টের এক্স এবং ওয়াই কোঅর্ডিনেট প্রিন্ট করা
                System.out.println("Mouse hovered at: (" + e.getX() + ", " + e.getY() + ")");
            }
        });

        return chartPanel;
    }

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

ব্যাখ্যা:

  • MouseMotionAdapter এবং mouseMoved() ব্যবহার করে আপনি মাউসের অবস্থান ট্র্যাক করতে পারেন যখন ব্যবহারকারী মাউস চার্টের উপর রাখে।
  • এই ইভেন্ট হ্যান্ডলিং ব্যবহার করে আপনি মাউসের অবস্থান অনুযায়ী বিভিন্ন ইন্টারেকশন তৈরি করতে পারেন।

সারাংশ

JFreeChart ব্যবহার করে আপনি Interactive Charts তৈরি করতে পারেন, যেমন Zooming, Panning, এবং Mouse Event HandlingEvent Handling এর মাধ্যমে আপনি ব্যবহারকারীর মাউস ক্লিক বা মাউস হোভার এর মতো ইন্টারঅ্যাকশনগুলিকে চার্টের সাথে সংযুক্ত করতে পারেন। এই ইন্টারেকশনগুলো আপনার চার্টের কার্যকারিতা এবং ব্যবহারযোগ্যতা বাড়িয়ে তোলে।

Content added By

JFreeChart একটি জনপ্রিয় Java লাইব্রেরি যা ডেটা ভিজ্যুয়ালাইজেশনের জন্য ব্যবহৃত হয়। ChartPanel হল জেফ্রিচার্টের একটি গুরুত্বপূর্ণ উপাদান, যা চার্ট প্রদর্শন করতে এবং এর সাথে interactive features যুক্ত করতে ব্যবহৃত হয়। ChartPanel ব্যবহার করে আপনি ব্যবহারকারীদের জন্য বিভিন্ন ধরনের interaction যেমন, zooming, panning, tooltips, এবং legend interaction ইত্যাদি যোগ করতে পারেন।

এই গাইডে, আমরা দেখব কিভাবে ChartPanel ব্যবহার করে interactive features যোগ করা যায়, যাতে ব্যবহারকারীরা চার্টের সাথে আরও ইন্টারঅ্যাক্টিভভাবে কাজ করতে পারে।


1. ChartPanel Overview

ChartPanel হল জেফ্রিচার্টের একটি বিশেষ ক্লাস যা চার্ট প্রদর্শন করার জন্য ব্যবহৃত হয়। এটি Swing উপাদান হিসেবে কাজ করে এবং আপনি এই প্যানেলের মাধ্যমে চার্টের উপস্থাপনা এবং ইন্টারঅ্যাকটিভ ফিচারগুলি কাস্টমাইজ করতে পারেন।

ChartPanel ইন্টারঅ্যাকটিভ ফিচারগুলি অন্তর্ভুক্ত করতে পারে যেমন:

  • Zooming: চার্টের একটি নির্দিষ্ট অংশে জুম ইন এবং জুম আউট করা।
  • Panning: চার্টের এক জায়গা থেকে অন্য জায়গায় স্ক্রল করা।
  • Tooltips: চার্টের উপাদানগুলির উপর মাউস হোভার করলে টুলটিপ প্রদর্শন।
  • Legend Interaction: লেজেন্ডের মাধ্যমে সিরিজ গুলি সক্রিয় বা নিষ্ক্রিয় করা।

2. Interactive Features যোগ করার উদাহরণ

নিচে একটি উদাহরণ দেওয়া হলো, যেখানে JFreeChart ব্যবহার করে Line Chart তৈরি করা হয়েছে এবং তার সাথে interactive features যোগ করা হয়েছে।

উদাহরণ:

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.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

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

public class InteractiveChartExample {

    public static JPanel createChartPanel() {
        // ডেটাসেট তৈরি করা
        XYSeries series = new XYSeries("Data Series");
        series.add(1.0, 5.0);
        series.add(2.0, 8.0);
        series.add(3.0, 6.0);
        series.add(4.0, 12.0);
        series.add(5.0, 10.0);

        XYSeriesCollection dataset = new XYSeriesCollection(series);

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

        // ChartPanel তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        // Interactivity: Zooming and Panning
        chartPanel.setMouseWheelEnabled(true); // Enable zooming
        chartPanel.setPreferredSize(new Dimension(800, 600));

        // Tooltips: Enable tooltips on hovering over the chart
        chartPanel.setToolTipText("Click or hover over the chart to interact");

        return chartPanel;
    }

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

কোডের ব্যাখ্যা:

  1. Dataset:
    • XYSeries ব্যবহার করে ডেটা পয়েন্টগুলো যোগ করা হয়েছে। এগুলি পরবর্তীতে XYSeriesCollection-এ যোগ করা হয়েছে।
  2. ChartPanel:
    • ChartPanel ব্যবহার করে JFreeChart চার্ট প্রদর্শন করা হয়েছে।
    • chartPanel.setMouseWheelEnabled(true) এই লাইনটি জুমিং সক্রিয় করেছে। অর্থাৎ, ব্যবহারকারী মাউস হুইল ব্যবহার করে চার্টের এক অংশে জুম ইন বা আউট করতে পারবেন।
    • chartPanel.setToolTipText("Click or hover over the chart to interact") টুলটিপ সক্ষম করেছে, যাতে ব্যবহারকারী মাউস হোভার করলে চার্টের উপাদানগুলির সাথে সম্পর্কিত তথ্য দেখতে পায়।

3. Interactive Features কাস্টমাইজেশন

3.1. Zooming:

Zooming চার্টে একটি নির্দিষ্ট অংশের উপর ফোকাস করতে সাহায্য করে। ব্যবহারকারী মাউস হুইল ব্যবহার করে জুম ইন এবং জুম আউট করতে পারেন।

chartPanel.setMouseWheelEnabled(true); // Enable zooming functionality

3.2. Panning:

Panning চার্টের মধ্যে স্ক্রল বা ঘোরানো সুবিধা প্রদান করে, যার মাধ্যমে ব্যবহারকারী চার্টের এক স্থান থেকে অন্য স্থানে স্থানান্তরিত হতে পারেন।

JFreeChart এর মধ্যে প্যানিং ডিফল্টভাবে সক্রিয় থাকে, কিন্তু আপনি ChartPanel এর মাধ্যমে প্যানিং সক্ষম করতে পারেন।

chartPanel.setMouseWheelEnabled(true); // Enables both zoom and pan functionality

3.3. Tooltips:

Tooltips ব্যবহারকারীকে চার্টের উপাদানগুলির বিস্তারিত তথ্য প্রদান করে যখন তারা চার্টের উপর মাউস হোভার করে।

chartPanel.setMouseWheelEnabled(true);
chartPanel.setToolTipText("Click or hover over the chart to interact");

3.4. Legend Interaction:

চার্টের লেজেন্ডের মাধ্যমে আপনি ব্যবহারকারীদের সিরিজ গুলি সক্রিয় বা নিষ্ক্রিয় করতে পারেন।

JFreeChart chart = ChartFactory.createXYLineChart(
        "Chart Title", // Title
        "X-Axis",      // X-Axis Label
        "Y-Axis",      // Y-Axis Label
        dataset,       // Dataset
        PlotOrientation.VERTICAL, // Plot orientation
        true,          // Show legend
        true,          // Tooltips
        false          // URLs
);

আপনি ব্যবহারকারীদেরকে একটি সিরিজের উপর ক্লিক করে সেই সিরিজকে চার্ট থেকে সরিয়ে ফেলতে বা পুনরায় ফিরিয়ে আনতে পারেন।


4. ChartPanel এর অন্য কাস্টমাইজেশন

ChartPanel এর মধ্যে আরও অনেক কাস্টমাইজেশন করা যেতে পারে। যেমন:

  • Chart Background Color পরিবর্তন:

    chartPanel.setBackground(Color.WHITE); // Set background color
    
  • Mouse Events: আপনি MouseListener বা MouseMotionListener ব্যবহার করে ChartPanel এর মধ্যে বিশেষ ইভেন্ট হ্যান্ডলিং যুক্ত করতে পারেন।

    উদাহরণ:

    chartPanel.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            System.out.println("Mouse clicked at: " + e.getPoint());
        }
    });
    

5. সারাংশ

JFreeChart এর ChartPanel এর মাধ্যমে আপনি আপনার চার্টে Interactive Features যেমন Zooming, Panning, Tooltips, এবং Legend Interaction যোগ করতে পারেন। এই ফিচারগুলো ব্যবহারকারীদের চার্টের সাথে আরও ভালোভাবে ইন্টারঅ্যাক্ট করতে সাহায্য করে এবং ডেটাকে আরও সহজে বিশ্লেষণ করার সুযোগ দেয়। আপনি ChartPanel ব্যবহার করে এই সকল ইন্টারঅ্যাকটিভ ফিচার কাস্টমাইজ করতে পারেন এবং আপনার গ্রাফিক্যাল ডেটা ভিজ্যুয়ালাইজেশনকে আরও শক্তিশালী এবং ব্যবহারকারী-বান্ধব করতে পারেন।

Content added By

JFreeChart একটি শক্তিশালী Java লাইব্রেরি যা ডেটা ভিজ্যুয়ালাইজেশন এবং চার্ট তৈরির জন্য ব্যবহৃত হয়। কখনো কখনো, আপনি চার্টে mouse events (যেমন ক্লিক বা মুভ) এবং key events (যেমন কীবোর্ড ইনপুট) হ্যান্ডল করতে চান। JFreeChart এ Mouse এবং Key events হ্যান্ডল করার মাধ্যমে আপনি চার্টের ইন্টারঅ্যাকটিভিটি এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারেন।

এই গাইডে আমরা Mouse এবং Key Events কিভাবে হ্যান্ডল করা যায় এবং JFreeChart-এ ব্যবহার করা যায়, তা নিয়ে আলোচনা করব।


1. Mouse Events হ্যান্ডল করা

Mouse Events-এর মাধ্যমে আপনি চার্টের উপর বিভিন্ন ধরনের ইন্টারঅ্যাকশন করতে পারেন, যেমন চার্টে ক্লিক করা, হোভার করা, ড্র্যাগ করা ইত্যাদি। JFreeChart মাউস ইভেন্ট হ্যান্ডল করতে MouseListener এবং MouseMotionListener ইন্টারফেস ব্যবহার করে।

1.1. MouseListener এবং MouseMotionListener ব্যবহার

MouseListener চারটি প্রধান মাউস ইভেন্ট হ্যান্ডল করতে ব্যবহৃত হয়:

  • mousePressed(): মাউস প্রেস করার সময়।
  • mouseReleased(): মাউস রিলিজ করার সময়।
  • mouseClicked(): মাউস ক্লিক করার সময়।
  • mouseEntered(): মাউস চার্টে প্রবেশ করার সময়।
  • mouseExited(): মাউস চার্ট থেকে বের হওয়ার সময়।

MouseMotionListener হ্যান্ডল করতে ব্যবহৃত হয়:

  • mouseMoved(): মাউস মুভ করার সময়।
  • mouseDragged(): মাউস ড্র্যাগ করার সময়।

উদাহরণ: Mouse Events হ্যান্ডল করা

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

public class MouseEventExample {

    public static JPanel createChartPanel() {
        // Dataset তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(5, "Category1", "Jan");
        dataset.addValue(3, "Category1", "Feb");
        dataset.addValue(4, "Category1", "Mar");

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

        // MouseListener যোগ করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                // মাউস ক্লিক করা হলে কাজ করবে
                System.out.println("Mouse clicked at: " + e.getPoint());
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                // মাউস চার্টে প্রবেশ করলে কাজ করবে
                System.out.println("Mouse entered chart area.");
            }

            @Override
            public void mouseExited(MouseEvent e) {
                // মাউস চার্ট থেকে বের হলে কাজ করবে
                System.out.println("Mouse exited chart area.");
            }
        });

        // Chart Panel তৈরি করে এবং রিটার্ন করা
        return chartPanel;
    }

    public static void main(String[] args) {
        // JFrame তৈরি করা
        JFrame frame = new JFrame("Mouse Event Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(createChartPanel());
        frame.pack();
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • MouseAdapter ক্লাস ব্যবহার করে বিভিন্ন মাউস ইভেন্ট হ্যান্ডল করা হয়েছে। যেমন, mouseClicked() ব্যবহার করে মাউস ক্লিক করার সময় পয়েন্ট আউটপুট দেখানো হয়েছে।
  • mouseEntered() এবং mouseExited() ইভেন্টের মাধ্যমে মাউস চার্টের মধ্যে প্রবেশ বা বের হওয়ার সময় বার্তা প্রদর্শন করা হয়েছে।

2. Key Events হ্যান্ডল করা

Key Events ব্যবহারকারীর কীবোর্ড ইনপুট হ্যান্ডল করতে ব্যবহৃত হয়। JFreeChart এ KeyListener ইন্টারফেসের মাধ্যমে আপনি কীবোর্ড ইভেন্ট হ্যান্ডল করতে পারেন।

2.1. KeyListener ব্যবহার

KeyListener-এর মাধ্যমে আপনি keyPressed(), keyReleased(), এবং keyTyped() ইভেন্টগুলো হ্যান্ডল করতে পারেন।

  • keyPressed(): কী চাপা হলে।
  • keyReleased(): কী ছেড়ে দিলে।
  • keyTyped(): কী টাইপ করার সময়।

উদাহরণ: Key Events হ্যান্ডল করা

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.*;

public class KeyEventExample {

    public static JPanel createChartPanel() {
        // Dataset তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(5, "Category1", "Jan");
        dataset.addValue(3, "Category1", "Feb");
        dataset.addValue(4, "Category1", "Mar");

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

        // KeyListener যোগ করা
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                // Key pressed event
                System.out.println("Key pressed: " + e.getKeyChar());
            }

            @Override
            public void keyReleased(KeyEvent e) {
                // Key released event
                System.out.println("Key released: " + e.getKeyChar());
            }
        });

        // Focusable set করা যাতে Key Events কাজ করে
        chartPanel.setFocusable(true);

        // Chart Panel তৈরি করে এবং রিটার্ন করা
        return chartPanel;
    }

    public static void main(String[] args) {
        // JFrame তৈরি করা
        JFrame frame = new JFrame("Key Event Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(createChartPanel());
        frame.pack();
        frame.setVisible(true);
    }
}

ব্যাখ্যা:

  • KeyAdapter ক্লাস ব্যবহার করে keyPressed() এবং keyReleased() ইভেন্ট হ্যান্ডল করা হয়েছে। যখন কীবোর্ডে একটি কী চাপা বা ছেড়ে দেওয়া হয়, তখন এটি কনসোলে কিপ্রেসড এবং কীয়রিলিজড বার্তা প্রদর্শন করবে।
  • setFocusable(true) ব্যবহার করা হয়েছে যাতে KeyListener কাজ করে, কারণ KeyListener শুধুমাত্র সেই কম্পোনেন্টে কাজ করে যা focusable

3. Mouse এবং Key Events একসাথে হ্যান্ডল করা

JFreeChart এর মধ্যে আপনি মাউস এবং কীবোর্ড ইভেন্ট একসাথে হ্যান্ডল করতে পারেন। এটি ব্যবহারকারীর সাথে ইন্টারঅ্যাকশনের উন্নত অভিজ্ঞতা তৈরি করতে সহায়তা করে। নিচে একটি উদাহরণ দেওয়া হয়েছে যেখানে একসাথে মাউস এবং কীবোর্ড ইভেন্ট হ্যান্ডল করা হয়েছে।

উদাহরণ:

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;

public class CombinedEventExample {

    public static JPanel createChartPanel() {
        // Dataset তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(5, "Category1", "Jan");
        dataset.addValue(3, "Category1", "Feb");
        dataset.addValue(4, "Category1", "Mar");

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

        // ChartPanel তৈরি করা
        ChartPanel chartPanel = new ChartPanel(chart);
        
        // MouseListener যোগ করা
        chartPanel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("Mouse clicked at: " + e.getPoint());
            }
        });

        // KeyListener যোগ করা
        chartPanel.addKeyListener(new KeyAdapter
Content added By

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

এই গাইডে আমরা দেখব কিভাবে Zooming এবং Panning ফিচারগুলো JFreeChart এ কনফিগার করা যায়।


1. Zooming এবং Panning কি?

  • Zooming: এটি চার্টের স্কেল পরিবর্তন করে, যার মাধ্যমে ব্যবহারকারী একটি নির্দিষ্ট ডেটার অংশকে বড় বা ছোট দেখতে পারে। এটি X বা Y অ্যাক্সিসের উপর স্কেল পরিবর্তন করে।
  • Panning: এটি চার্টের দৃশ্য (view) স্থানান্তর করে, যার মাধ্যমে ব্যবহারকারী চার্টের নির্দিষ্ট অংশ দেখতে পারে। প্যানিং ব্যবহার করে আপনি চার্টের ডেটা এক্সপ্লোর করতে পারেন।

2. Zooming এবং Panning কনফিগার করা

2.1 XYPlot এ Zooming এবং Panning কনফিগার করা

XYPlot হল একটি সাধারণ প্লট টাইপ যা XY Chart তৈরি করতে ব্যবহৃত হয়। JFreeChart এ Zooming এবং Panning কনফিগার করতে হলে, আপনাকে PlotRangeZoomable এবং DomainZoomable সেট করতে হবে। এছাড়া, MouseWheelListener এবং MouseEvent ব্যবহার করে আপনি মাউস হুইল এবং ড্র্যাগিং এর মাধ্যমে প্যানিং এবং জুমিং কনফিগার করতে পারেন।

উদাহরণ: XY Line Chart এর জন্য Zooming এবং Panning

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.ui.ApplicationFrame;
import org.jfree.chart.ui.RefineryUtilities;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

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

public class ZoomingPanningExample extends ApplicationFrame {

    public ZoomingPanningExample(String title) {
        super(title);
        JFreeChart chart = createChart(createDataset());
        chart.setNotify(true); // Enable notifications for updates
        XYPlot plot = (XYPlot) chart.getPlot();
        
        // Enable zooming and panning
        plot.setDomainPannable(true); // Allow panning on the X-axis
        plot.setRangePannable(true);  // Allow panning on the Y-axis

        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
        chartPanel.setMouseWheelEnabled(true);  // Enable zooming with the mouse wheel

        chartPanel.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                chartPanel.setMouseWheelEnabled(true);  // Enable zooming when the mouse is pressed
            }
        });

        setContentPane(chartPanel);
    }

    private XYSeriesCollection createDataset() {
        XYSeries series = new XYSeries("Data");
        series.add(1, 1);
        series.add(2, 4);
        series.add(3, 9);
        series.add(4, 16);
        series.add(5, 25);
        
        XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(series);
        
        return dataset;
    }

    private JFreeChart createChart(XYSeriesCollection dataset) {
        return ChartFactory.createXYLineChart(
                "Zooming and Panning Example", // Chart title
                "X-Axis",                     // X-Axis label
                "Y-Axis",                     // Y-Axis label
                dataset,                      // Dataset
                PlotOrientation.VERTICAL,     // Plot orientation
                true,                          // Include legend
                true,                          // Tooltips
                false                          // URLs
        );
    }

    public static void main(String[] args) {
        ZoomingPanningExample demo = new ZoomingPanningExample("Zooming and Panning Example");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    }
}

ব্যাখ্যা:

  1. setDomainPannable(true): X-Axis এ প্যানিং সক্ষম করে।
  2. setRangePannable(true): Y-Axis এ প্যানিং সক্ষম করে।
  3. setMouseWheelEnabled(true): মাউস হুইল দিয়ে জুমিং সক্ষম করা হয়।

এটি মাউস হুইল দিয়ে চার্ট জুম ইন এবং আউট করার ক্ষমতা প্রদান করে। এছাড়া, ড্র্যাগ করে প্যানিংও সম্ভব।


3. Zooming এবং Panning কাস্টমাইজেশন

3.1 Zooming কাস্টমাইজেশন

যদি আপনি বিশেষভাবে শুধুমাত্র X বা Y অ্যাক্সিসের জন্য zooming কাস্টমাইজ করতে চান, তবে আপনাকে সেই অ্যাক্সিসের জন্য setRangeZoomable এবং setDomainZoomable কাস্টমাইজ করতে হবে।

উদাহরণ: শুধুমাত্র X-Axis Zooming Enable করা

plot.setDomainZoomable(true); // Enable zooming only on the X-axis
plot.setRangeZoomable(false); // Disable zooming on the Y-axis

এটি X-Axis এর উপর zooming সক্ষম করবে এবং Y-Axis এর zooming নিষ্ক্রিয় করবে।


3.2 Panning কাস্টমাইজেশন

Panning শুধুমাত্র X বা Y অ্যাক্সিসে সক্ষম করতে হলে, আপনাকে setDomainPannable এবং setRangePannable পদ্ধতিগুলি ব্যবহার করতে হবে।

উদাহরণ: শুধুমাত্র Y-Axis Panning Enable করা

plot.setDomainPannable(false); // Disable panning on the X-axis
plot.setRangePannable(true);   // Enable panning on the Y-axis

এটি শুধুমাত্র Y-Axis এর উপর প্যানিং সক্ষম করবে এবং X-Axis এর প্যানিং নিষ্ক্রিয় করবে।


4. Zooming এবং Panning টুলবার ব্যবহার করা

JFreeChart এ zooming এবং panning কনফিগার করার সময় আপনি কিছু অতিরিক্ত কাস্টম টুলবার এবং ইন্টারেক্টিভ ফিচার যোগ করতে পারেন। যেমন, আপনি Zoom In এবং Zoom Out বাটন যোগ করতে পারেন।

উদাহরণ:

// ChartPanel এর মধ্যে Zoom Control যোগ করা
chartPanel.setMouseWheelEnabled(true);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));

এটি চাটের মাউস হুইল সাপোর্ট যোগ করবে, যাতে ব্যবহারকারী চার্টে zoom in এবং zoom out করতে পারে।


5. Multiple Plot Zooming

যদি আপনার একাধিক প্লট (plots) থাকে এবং আপনি চান যে সকল প্লট একই সময়ে zoom in এবং zoom out হোক, তবে আপনি একটি ZoomablePlot তৈরি করতে পারেন।

উদাহরণ:

plot.setDomainPannable(true);
plot.setRangePannable(true);
plot.setDomainZoomable(true);
plot.setRangeZoomable(true);

এটি সকল প্লটের জন্য panning এবং zooming কনফিগার করবে।


সারাংশ

Zooming এবং Panning ব্যবহারকারীকে তাদের চার্টে ডেটার নির্দিষ্ট অংশ দেখতে সাহায্য করে। JFreeChart এর মাধ্যমে আপনি XYPlot অথবা CategoryPlot এর মাধ্যমে zooming এবং panning কনফিগার করতে পারেন। এটি মাউস হুইল, ড্র্যাগ এবং কাস্টম কনফিগারেশনের মাধ্যমে করা সম্ভব। MouseWheelListener, MouseAdapter, এবং setDomainPannable/setRangePannable এর মাধ্যমে আপনি আপনার চার্টের ইন্টারঅ্যাকটিভিটির অভিজ্ঞতা আরও উন্নত করতে পারেন।

Content added By

JFreeChart একটি শক্তিশালী লাইব্রেরি যা Java-তে ডেটা ভিজ্যুয়ালাইজেশন এবং চার্ট তৈরি করতে ব্যবহৃত হয়। যখন আপনি রিয়েল-টাইম ডেটা প্রদর্শন করতে চান, তখন Real-time Data Interaction বা Dynamic Data Update ব্যবহার করতে হয়। এই গাইডে, আমরা দেখব কিভাবে JFreeChart ব্যবহার করে রিয়েল-টাইম ডেটা চার্টে প্রদর্শন করা যায়, যেখানে ডেটা আপডেট হয় এবং তা চার্টে প্রতিফলিত হয়।


1. Real-time Line Chart Example

আমরা প্রথমে একটি Line Chart তৈরি করব, যা রিয়েল-টাইম ডেটা (যেমন স্টক প্রাইস, সিস্টেমের পারফরম্যান্স, বা সেন্সর ডেটা) আপডেট করবে।

উদাহরণ: Real-time Line Chart with Dynamic Data Update

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;

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

public class RealTimeLineChartExample {

    private static TimeSeries series;

    public static JPanel createChartPanel() {
        // TimeSeries তৈরি করা, যেখানে রিয়েল-টাইম ডেটা থাকবে
        series = new TimeSeries("Real-time Data");
        TimeSeriesCollection dataset = new TimeSeriesCollection(series);

        // Line Chart তৈরি করা
        JFreeChart chart = ChartFactory.createTimeSeriesChart(
                "Real-time Data",   // Chart Title
                "Time",             // X-Axis Label
                "Value",            // Y-Axis Label
                dataset,            // Dataset
                true,               // Show Legend
                true,               // Tooltips
                false               // URLs
        );

        // Chart Panel তৈরি করা এবং রিটার্ন করা
        return new ChartPanel(chart);
    }

    public static void updateData() {
        // Random Data Generator
        Random random = new Random();
        double value = 50 + random.nextDouble() * 10; // Random data between 50 and 60

        // Get the current time and update the series
        Second currentTime = new Second();
        series.add(currentTime, value); // Adding new data point to the chart
    }

    public static void startRealTimeUpdate() {
        Timer timer = new Timer(1000, e -> updateData()); // Update every second
        timer.start();
    }

    public static void main(String[] args) {
        // JFrame তৈরি করা
        JFrame frame = new JFrame("Real-time Line Chart Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(createChartPanel());
        frame.pack();
        frame.setVisible(true);

        // Start real-time data update
        startRealTimeUpdate();
    }
}

ব্যাখ্যা:

  • TimeSeries: এখানে TimeSeries ব্যবহার করা হয়েছে, যা রিয়েল-টাইম ডেটা প্রদর্শন করতে খুবই উপযোগী। এটি Second টাইম ইউনিটে ডেটা ধারণ করে।
  • Random Data Generation: র্যান্ডম ডেটা জেনারেট করা হচ্ছে প্রতি সেকেন্ডে, যা আমরা updateData() মেথডের মাধ্যমে চার্টে অ্যাড করছি।
  • Timer: javax.swing.Timer ব্যবহার করা হয়েছে প্রতি সেকেন্ডে ডেটা আপডেট করার জন্য। এটি সময়ের সাথে ডেটা আপডেট করতে সাহায্য করে।

2. Real-time Bar Chart Example

এখন, আমরা একটি Bar Chart তৈরি করব যা রিয়েল-টাইম ডেটা গ্রাফিক্যালি প্রদর্শন করবে। যেমন, প্রতিটি নির্দিষ্ট সময় পর পর Bar Chart আপডেট হবে।

উদাহরণ: Real-time Bar Chart with Dynamic Updates

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.*;
import java.util.Random;

public class RealTimeBarChartExample {

    private static DefaultCategoryDataset dataset;

    public static JPanel createChartPanel() {
        // ডেটাসেট তৈরি করা
        dataset = new DefaultCategoryDataset();
        dataset.addValue(0, "Value", "0");

        // Bar Chart তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Real-time Bar Chart",  // Chart Title
                "Time",                 // X-Axis Label
                "Value",                // Y-Axis Label
                dataset,                // Dataset
                org.jfree.chart.plot.PlotOrientation.VERTICAL, // Orientation
                true,                   // Show Legend
                true,                   // Tooltips
                false                   // URLs
        );

        // Chart Panel তৈরি করে এবং রিটার্ন করা
        return new ChartPanel(chart);
    }

    public static void updateData() {
        // Random Data Generator
        Random random = new Random();
        int value = random.nextInt(100); // Generate random value between 0 and 100

        // Update the dataset with the new value
        dataset.addValue(value, "Value", String.valueOf(System.currentTimeMillis() / 1000)); // Timestamp as X-Axis
    }

    public static void startRealTimeUpdate() {
        Timer timer = new Timer(1000, e -> updateData()); // Update every second
        timer.start();
    }

    public static void main(String[] args) {
        // JFrame তৈরি করা
        JFrame frame = new JFrame("Real-time Bar Chart Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(createChartPanel());
        frame.pack();
        frame.setVisible(true);

        // Start real-time data update
        startRealTimeUpdate();
    }
}

ব্যাখ্যা:

  • DefaultCategoryDataset: এখানে DefaultCategoryDataset ব্যবহার করা হয়েছে, যা Bar Chart এর ডেটা ধারণ করতে সাহায্য করে।
  • Random Data Generation: প্রতি সেকেন্ডে র্যান্ডম ডেটা উৎপন্ন হচ্ছে এবং সেটি updateData() মেথডের মাধ্যমে বারের ডেটাতে আপডেট করা হচ্ছে।
  • Timer: প্রতি সেকেন্ডে ডেটা আপডেট করতে javax.swing.Timer ব্যবহার করা হয়েছে।

3. Real-time Candlestick Chart Example

Candlestick Chart সাধারণত ফাইনান্সিয়াল ডেটা (যেমন স্টক প্রাইস) প্রদর্শন করতে ব্যবহৃত হয়, যেখানে Open, High, Low, এবং Close (OHLC) প্রাইস দেখানো হয়। নিচে দেখানো হচ্ছে কিভাবে একটি রিয়েল-টাইম Candlestick Chart তৈরি করা যায়।

উদাহরণ: Real-time Candlestick Chart with Dynamic Updates

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

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

public class RealTimeCandlestickChartExample {

    private static XYSeries series;

    public static JPanel createChartPanel() {
        // Candlestick Data (Open, High, Low, Close)
        series = new XYSeries("Stock Data");
        series.add(1, 100);
        series.add(2, 120);
        series.add(3, 80);
        series.add(4, 110);

        XYSeriesCollection dataset = new XYSeriesCollection(series);

        // Creating the chart
        JFreeChart chart = ChartFactory.createXYLineChart(
                "Real-time Candlestick Chart",  // Chart Title
                "Time",                        // X-Axis Label
                "Price",                       // Y-Axis Label
                dataset,                       // Dataset
                org.jfree.chart.plot.PlotOrientation.VERTICAL, // Plot Orientation
                true,                          // Show Legend
                true,                          // Tooltips
                false                          // URLs
        );

        // Custom renderer for candlestick chart
        XYPlot plot = chart.getXYPlot();
        plot.setDomainGridlinePaint(Color.GRAY);
        plot.setRangeGridlinePaint(Color.GRAY);

        // Chart Panel
        return new ChartPanel(chart);
    }

    public static void updateData() {
        // Generate random values for Open, High, Low, Close
        Random random = new Random();
        double open = 100 + random.nextDouble() * 10;
        double high = open + random.nextDouble() * 5;
        double low = open - random.nextDouble() * 5;
        double close = open + random.nextDouble() * 2;

        // Update the series with new values
        series.add(series.getItemCount() + 1, open); // Open
        series.add(series.getItemCount() + 1, high); // High
        series.add(series.getItemCount() + 1, low);  // Low
        series.add(series.getItemCount() + 1, close); // Close
    }

    public static void startRealTimeUpdate() {
        Timer timer = new Timer(1000, e -> updateData()); // Update every second
        timer.start();
    }

    public static void main(String[] args) {
        // JFrame for displaying the chart
        JFrame frame = new JFrame("Real-time Candlestick Chart Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(createChartPanel());
        frame.pack();
        frame.setVisible(true);

        // Start real-time data update
        startRealTimeUpdate();
    }
}

ব্যাখ্যা:

  • Candlestick Data: এখানে র্যান্ডমভাবে Open, High, Low, এবং Close প্রাইস তৈরি করা হচ্ছে এবং প্রতি সেকেন্ডে updateData() মেথডের মাধ্যমে সিরিজে অ্যাড করা হচ্ছে।
  • XYSeries: এই সিরিজটি ডেটা ধারণ করে এবং XYSeriesCollection এর মাধ্যমে এটি চার্টে উপস্থাপন করা হয়।

সারাংশ

Real-time Data Interaction বা Dynamic Charting তৈরি করতে JFreeChart ব্যবহার করে আপনি বিভিন্ন ধরনের Line Chart, Bar Chart, এবং Candlestick Chart তৈরি করতে পারেন, যেখানে ডেটা প্রতি সেকেন্ডে আপডেট হয়ে চার্টে প্রদর্শিত হয়। এখানে Timer এবং Random Data Generation ব্যবহার করা হয়েছে, যাতে প্রতি সেকেন্ডে ডেটা আপডেট হয় এবং তা চার্টে রিয়েল-টাইমে প্রতিফলিত হয়। JFreeChart এই ধরনের Real-time Data Visualization এর জন্য খুবই উপকারী।

Content added By
Promotion

Are you sure to start over?

Loading...