Real-time Dataset Update করা

Real-time Data Visualization - জেফ্রিচার্ট (JFreeChart) - Java Technologies

238

Real-time Data Visualization হল একটি প্রক্রিয়া যেখানে চলমান বা সাম্প্রতিক সময়ে উৎপন্ন ডাটা চার্টে প্রদর্শিত হয়। JFreeChart লাইব্রেরি ব্যবহার করে আপনি সহজেই real-time ডাটা ভিজ্যুয়ালাইজেশন এবং dataset আপডেট করতে পারেন। এই প্রক্রিয়ায়, নতুন ডাটা পয়েন্টগুলি সরাসরি চার্টে যুক্ত করা হয় এবং চার্টের ভিউ আপডেট হয়।

JFreeChart-এ real-time ডাটা ভিজ্যুয়ালাইজেশন করার জন্য, dataset আপডেট করার মাধ্যমে চার্ট রেন্ডারিং করা হয়। এখানে XYSeries বা CategoryDataset ব্যবহার করে ডাটা আপডেট করা সম্ভব।


Real-time Dataset Update করার জন্য প্রয়োজনীয় কনফিগারেশন

1. XYSeries ব্যবহার করে Real-time Data Update

XYSeries JFreeChart-এর একটি কমপ্লেক্স ডেটাসেট যা বিশেষভাবে real-time ডাটা প্রদর্শনের জন্য উপযুক্ত। এটি মূলত XYPlot ব্যবহার করে গ্রাফে ডাটা প্রদর্শন করে, যেখানে এক্স অক্ষ (X-axis) সময় বা অন্য কোন সিরিজ নির্দেশ করে এবং ওয়াই অক্ষ (Y-axis) সেই সময়ের মান দেখায়।

উদাহরণ: Real-time Data Visualization with XYSeries

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

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

public class RealTimeChartExample {

    private static XYSeries series;

    public static void main(String[] args) {
        // XYSeries তৈরি করা
        series = new XYSeries("Real-time Data");

        // XYSeriesCollection তৈরি করা
        XYSeriesCollection dataset = new XYSeriesCollection(series);

        // Line Chart তৈরি করা
        JFreeChart chart = ChartFactory.createXYLineChart(
                "Real-time Data Visualization", // Chart title
                "Time", // X-axis Label
                "Value", // Y-axis Label
                dataset, // Dataset
                PlotOrientation.VERTICAL, // Plot orientation
                true, // Include legend
                true, // Tooltips
                false // URLs
        );

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

        // JFrame তৈরি করা
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(chartPanel, BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);

        // Real-time data update এর জন্য থ্রেড চালানো
        updateData();
    }

    // Real-time data update করার জন্য ফাংশন
    private static void updateData() {
        Thread dataThread = new Thread(() -> {
            Random rand = new Random();
            int time = 0;

            while (true) {
                // নতুন ডাটা পয়েন্ট যোগ করা
                series.add(time, rand.nextInt(100)); // 0 থেকে 100 পর্যন্ত random value

                // Dataset আপডেট করা
                try {
                    Thread.sleep(1000); // প্রতি 1 সেকেন্ডে ডাটা আপডেট হবে
                    time++; // এক সেকেন্ডে সময় বাড়ানো
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        dataThread.start();
    }
}

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

  1. XYSeries:
    • XYSeries ব্যবহার করে একটি সিরিজ তৈরি করা হয়েছে যার নাম "Real-time Data"। এই সিরিজের মধ্যে ডাটা পয়েন্ট যোগ করা হবে এবং তা চার্টে প্রদর্শিত হবে।
  2. XYSeriesCollection:
    • XYSeriesCollection ব্যবহার করে একাধিক XYSeries যোগ করা যায়, তবে এখানে একটি একক সিরিজ ব্যবহৃত হয়েছে।
  3. ChartFactory.createXYLineChart():
    • এই মেথড ব্যবহার করে একটি XY Line Chart তৈরি করা হয়েছে, যেখানে dataset প্যারামিটার হিসেবে XYSeriesCollection দেয়া হয়েছে।
  4. updateData():
    • updateData() ফাংশন একটি থ্রেড চালায় যা প্রতি সেকেন্ডে নতুন ডাটা পয়েন্ট যোগ করে এবং XYSeries আপডেট করে। এটি ব্যবহার করে real-time ডাটা সিস্টেমের মতো কাজ করা সম্ভব।
  5. Thread.sleep():
    • প্রতি ১ সেকেন্ডে নতুন ডাটা পয়েন্ট যোগ করা হচ্ছে এবং তারপর ১ সেকেন্ড অপেক্ষা করা হচ্ছে, যাতে ডাটাটি ধীরে ধীরে আপডেট হয়।
  6. ChartPanel:
    • ChartPanel তৈরি করে সেই চার্টটিকে JFrame-এ প্রদর্শন করা হচ্ছে।

2. CategoryDataset ব্যবহার করে Real-time Data Update

CategoryDataset সাধারণত Bar Chart, Line Chart, এবং অন্যান্য ক্যাটেগরির ভিত্তিতে ডাটা উপস্থাপন করার জন্য ব্যবহৃত হয়। যদিও XYSeries real-time ডাটা আপডেটের জন্য উপযুক্ত, তবুও CategoryDataset ব্যবহার করে একই কার্যক্রম করা সম্ভব।

উদাহরণ: Real-time Data Update with CategoryDataset

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

    private static DefaultCategoryDataset dataset;

    public static void main(String[] args) {
        // Dataset তৈরি করা
        dataset = new DefaultCategoryDataset();

        // Chart তৈরি করা
        JFreeChart chart = ChartFactory.createLineChart(
                "Real-time Category Chart",   // Chart title
                "Time",                      // X-axis Label
                "Value",                     // Y-axis Label
                dataset                      // Dataset
        );

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

        // JFrame তৈরি করা
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(chartPanel, BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);

        // Real-time data update এর জন্য থ্রেড চালানো
        updateData();
    }

    private static void updateData() {
        Thread dataThread = new Thread(() -> {
            Random rand = new Random();
            int time = 0;

            while (true) {
                // নতুন ডাটা পয়েন্ট যোগ করা
                dataset.addValue(rand.nextInt(100), "Series1", String.valueOf(time));

                // Dataset আপডেট করা
                try {
                    Thread.sleep(1000); // প্রতি 1 সেকেন্ডে ডাটা আপডেট হবে
                    time++; // এক সেকেন্ডে সময় বাড়ানো
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        dataThread.start();
    }
}

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

  • এখানে DefaultCategoryDataset ব্যবহার করা হয়েছে যেখানে ক্যাটেগরি (সময়) এবং মান (value) যোগ করা হচ্ছে।
  • addValue() মেথড ব্যবহার করে Series1 নামক সিরিজে প্রতি সেকেন্ডে একটি নতুন মান যোগ করা হচ্ছে।

Conclusion

JFreeChart-এ real-time data update করার জন্য আপনি XYSeries বা CategoryDataset ব্যবহার করতে পারেন। XYSeries সাধারণত সময়ভিত্তিক ডাটা ভিজ্যুয়ালাইজেশনের জন্য উপযুক্ত, যখন CategoryDataset বিভিন্ন ক্যাটেগরি ভিত্তিক ডাটার জন্য ব্যবহার করা হয়। উভয় ক্ষেত্রেই, আপনি নতুন ডাটা পয়েন্ট যোগ করে চার্ট রেন্ডারিং আপডেট করতে পারবেন। আপনি JFreeChart এর ChartPanel এবং থ্রেড ব্যবহার করে এই প্রক্রিয়া সহজেই বাস্তবায়ন করতে পারেন, যা real-time ডাটা ভিজ্যুয়ালাইজেশনের জন্য অত্যন্ত কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...