JFreeChart এর জন্য Dataset এবং Renderer কাস্টমাইজেশন

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

324

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

  • Dataset: এটি চার্টে প্রদর্শিত ডেটার উৎস। এটি ডেটার সংগ্রহ যা চার্টের বিভিন্ন ধরনের উপাদান যেমন লাইন, বার, পি-চার্টে রেন্ডারিং হবে।
  • Renderer: এটি চার্টে ডেটার দৃশ্যমানতা নির্ধারণ করে, যেমন লাইন স্টাইল, রঙ, পয়েন্টের চিহ্ন, ইত্যাদি।

এই গাইডে আমরা Dataset এবং Renderer কাস্টমাইজেশন সম্পর্কে আলোচনা করব।


1. Dataset কাস্টমাইজেশন

Dataset চার্টের জন্য ডেটা প্রদান করে এবং এটি চার্টের ভিতরে বিভিন্ন তথ্য কিভাবে প্রদর্শিত হবে তা নির্ধারণ করে। আপনি CategoryDataset, XYDataset, TimeSeriesDataset ইত্যাদি বিভিন্ন ধরনের ডেটাসেট ব্যবহার করতে পারেন।

1.1. CategoryDataset কাস্টমাইজেশন (Bar Chart, Line Chart)

ধরা যাক, আপনি একটি Bar Chart তৈরি করতে চান এবং সেটির Dataset কাস্টমাইজ করতে চান। এই ক্ষেত্রে, আমরা DefaultCategoryDataset ব্যবহার করব।

উদাহরণ:

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

public class BarChartWithCustomDataset {

    public static JPanel createChartPanel() {
        // Dataset তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(5.0, "Category1", "Jan");
        dataset.addValue(3.0, "Category1", "Feb");
        dataset.addValue(4.0, "Category1", "Mar");
        dataset.addValue(7.0, "Category1", "Apr");

        // Bar Chart তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart Example",  // Chart Title
                "Month",              // X-Axis Label
                "Value",              // Y-Axis Label
                dataset               // Dataset
        );

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

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

এখানে, DefaultCategoryDataset ব্যবহার করা হয়েছে যেখানে ৪টি মাসের জন্য ডেটা রয়েছে। আপনি এটিকে আরও কাস্টমাইজ করতে পারেন, যেমন Bar এর লেবেল, শিরোনাম, ইত্যাদি।


1.2. XYDataset কাস্টমাইজেশন (XY Chart)

XYDataset ব্যবহৃত হয় XY Line Chart বা Scatter Plot তৈরি করার জন্য। XYSeries এবং XYSeriesCollection ব্যবহার করে ডেটা তৈরি করা যায়।

উদাহরণ:

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.*;

public class XYChartWithCustomDataset {

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

        XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(series);

        // XY Line Chart তৈরি করা
        JFreeChart chart = ChartFactory.createXYLineChart(
                "XY Chart Example",  // Chart Title
                "X-Axis",            // X-Axis Label
                "Y-Axis",            // Y-Axis Label
                dataset              // Dataset
        );

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

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

এখানে, XYSeries ব্যবহার করা হয়েছে XYDataset তৈরির জন্য। এতে X এবং Y এর মানের জোড়া যোগ করা হয়েছে এবং সেটি একটি XYSeriesCollection এর মধ্যে রাখা হয়েছে।


2. Renderer কাস্টমাইজেশন

Renderer হল চার্টের দৃশ্যমান স্টাইল, যেমন লাইন রঙ, বার রঙ, পয়েন্ট চিহ্ন ইত্যাদি কাস্টমাইজ করার জন্য ব্যবহৃত হয়। এটি ডেটাকে দৃশ্যমানভাবে উপস্থাপন করে।

2.1. Line Chart Renderer কাস্টমাইজেশন

একটি Line Chart তৈরি করার সময়, আপনি XYPlot এর মাধ্যমে Renderer কাস্টমাইজ করতে পারেন, যেমন লাইন থিকনেস (thickness), রঙ (color) এবং অন্যান্য স্টাইল।

উদাহরণ:

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.plot.PlotOrientation;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import java.awt.Color;
import javax.swing.*;

public class LineChartWithCustomRenderer {

    public static JPanel createChartPanel() {
        // Dataset তৈরি করা
        XYSeries series = new XYSeries("Line Data");
        series.add(1, 5);
        series.add(2, 10);
        series.add(3, 15);
        series.add(4, 20);

        XYSeriesCollection dataset = new XYSeriesCollection(series);

        // Line Chart তৈরি করা
        JFreeChart chart = ChartFactory.createXYLineChart(
                "Custom Line 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
        );

        // Renderer কাস্টমাইজ করা
        XYPlot plot = chart.getXYPlot();
        XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
        renderer.setSeriesPaint(0, Color.BLUE);  // Line color set to blue
        renderer.setSeriesStroke(0, new java.awt.BasicStroke(3.0f));  // Line thickness set to 3.0f
        plot.setRenderer(renderer);

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

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

ব্যাখ্যা:

  • XYLineAndShapeRenderer ব্যবহার করে আপনি লাইন রঙ এবং লাইন পুরুত্ব কাস্টমাইজ করতে পারেন।
  • setSeriesPaint(0, Color.BLUE) লাইনটির রঙ ব্লু (Blue) করেছে।
  • setSeriesStroke(0, new BasicStroke(3.0f)) লাইনটির পুরুত্ব ৩ পিক্সেল করেছে।

2.2. Bar Chart Renderer কাস্টমাইজেশন

Bar Chart এর ক্ষেত্রে, আপনি BarRenderer ব্যবহার করে বার এর রঙ, বার স্পেসিং ইত্যাদি কাস্টমাইজ করতে পারেন।

উদাহরণ:

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

public class BarChartWithCustomRenderer {

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

        // Bar Chart তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Custom Bar Chart", // Chart Title
                "Month",            // X-Axis Label
                "Value",            // Y-Axis Label
                dataset             // Dataset
        );

        // Renderer কাস্টমাইজ করা
        CategoryPlot plot = chart.getCategoryPlot();
        BarRenderer renderer = new BarRenderer();
        renderer.setSeriesPaint(0, Color.GREEN); // Set bar color to green
        plot.setRenderer(renderer);

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

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

ব্যাখ্যা:

  • BarRenderer এর মাধ্যমে Bar Chart এর রঙ কাস্টমাইজ করা হয়েছে। setSeriesPaint(0, Color.GREEN) ব্যবহার করে বার রঙ সবুজ (Green) করা হয়েছে।

সারাংশ

JFreeChart ব্যবহার করে আপনি আপনার চার্টের Dataset এবং Renderer কাস্টমাইজ করতে পারেন। Dataset চার্টে প্রদর্শিত ডেটাকে নিয়ন্ত্রণ করে, এবং Renderer চার্টের দৃশ্যমান উপস্থাপনাকে কাস্টমাইজ করে, যেমন লাইন রঙ, পুরুত্ব, বার রঙ ইত্যাদি। এই কাস্টমাইজেশনগুলির মাধ্যমে আপনি আপনার চার্টকে আরও স্পষ্ট, আকর্ষণীয় এবং ব্যবহারকারী বান্ধব করে তুলতে পারেন।

Content added By

JFreeChart একটি শক্তিশালী Java লাইব্রেরি যা গ্রাফিক্যাল ডেটা ভিজ্যুয়ালাইজেশনের জন্য ব্যবহৃত হয়। এটি ডেটা প্রদর্শন করার জন্য Dataset এবং Renderer ব্যবহার করে। এই দুইটি উপাদান চার্টের ডেটা পরিচালনা এবং তার ভিজ্যুয়াল উপস্থাপনাকে নিয়ন্ত্রণ করে।

এই গাইডে, আমরা বিস্তারিতভাবে Dataset এবং Renderer এর ভূমিকা আলোচনা করব এবং দেখব কিভাবে এগুলি জেফ্রিচার্টে কাজ করে।


1. Dataset এর ভূমিকা

Dataset হল জেফ্রিচার্টের একটি গুরুত্বপূর্ণ উপাদান যা চার্টে প্রদর্শিত ডেটা ধারণ করে। এটি হল একটি ডেটা স্টোরেজ কাঠামো যা চার্টের মাধ্যমে প্রদর্শিত হয়। জেফ্রিচার্টে বিভিন্ন ধরনের Dataset ব্যবহার করা যায়, এবং এগুলোর মধ্যে CategoryDataset, XYDataset, PieDataset, TimeSeriesDataset ইত্যাদি রয়েছে।

Dataset এর কাজ:

  • Data Representation: Dataset চার্টের মধ্যে ডেটাকে সঠিকভাবে প্রদর্শন করতে সাহায্য করে।
  • Data Organization: Dataset ডেটাকে একটি কাঠামোবদ্ধ আকারে সাজিয়ে রাখে, যাতে Renderer বা Plot এ সহজে অ্যাক্সেস করা যায়।

Common Dataset Types in JFreeChart:

  1. CategoryDataset: এটি সাধারণত Bar Chart এবং Line Chart এর জন্য ব্যবহৃত হয়। এটি কেটেগরি ভিত্তিক ডেটা যেমন বছরের বিক্রয়, পণ্যের ধরন ইত্যাদি জন্য উপযুক্ত।
  2. XYDataset: এটি XY Line Chart এবং Scatter Plot এর জন্য ব্যবহৃত হয়। এখানে ডেটা X এবং Y অক্ষের মধ্যে প্রদর্শিত হয়।
  3. PieDataset: এটি Pie Chart তৈরি করতে ব্যবহৃত হয়, যেখানে ডেটার অংশ হিসেবে বিভিন্ন ক্যাটেগরি থাকে এবং তাদের পরিমাণ দেখানো হয়।
  4. TimeSeriesDataset: এটি টাইম সিরিজ ডেটা (যেমন স্টক মার্কেটের ডেটা, তাপমাত্রা) উপস্থাপন করার জন্য ব্যবহৃত হয়।

উদাহরণ: XYDataset তৈরি করা

import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

public class XYDatasetExample {

    public static XYSeriesCollection createDataset() {
        XYSeries series = new XYSeries("Example Series");
        series.add(1.0, 1.0);
        series.add(2.0, 4.0);
        series.add(3.0, 9.0);
        series.add(4.0, 16.0);

        XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(series);
        return dataset;
    }
}

এখানে, XYSeries ডেটা পয়েন্ট তৈরি করেছে এবং XYSeriesCollection তাকে একত্রিত করেছে। এটি XYDataset তৈরি করে, যা জেফ্রিচার্টে XY Line Chart এ প্রদর্শিত হবে।


2. Renderer এর ভূমিকা

Renderer হল জেফ্রিচার্টের একটি অংশ যা Dataset থেকে প্রাপ্ত ডেটাকে চার্টে উপস্থাপন করার জন্য ব্যবহার হয়। Renderer এর মাধ্যমে আপনি চার্টের ভিজ্যুয়াল রেন্ডারিং কাস্টমাইজ করতে পারেন, যেমন লাইন স্টাইল, পয়েন্ট মার্কার, বার কালার, এবং আরও অনেক কিছু।

Renderer এর কাজ:

  • Data Visualization: Renderer চার্টে ডেটাকে ভিজ্যুয়াল আকারে রূপান্তর করে, যেমন লাইন, বার, পয়েন্ট মার্কার ইত্যাদি।
  • Customization: Renderer এর মাধ্যমে আপনি ডেটার স্টাইল কাস্টমাইজ করতে পারেন, যেমন রঙ, লাইন পুরুত্ব, বার স্টাইল ইত্যাদি।
  • Series Customization: আপনি বিভিন্ন সিরিজের জন্য আলাদা Renderer ব্যবহার করতে পারেন, যেমন একটি সিরিজের জন্য লাল রঙ এবং অন্য সিরিজের জন্য নীল রঙ।

Common Renderer Types in JFreeChart:

  1. CategoryItemRenderer: এটি সাধারণত Bar Chart, Line Chart এবং Area Chart এর জন্য ব্যবহৃত হয়। এটি প্রতিটি কেটেগরি বা সিরিজের জন্য ডেটা পয়েন্ট রেন্ডার করে।
  2. XYItemRenderer: এটি XYDataset এর জন্য ব্যবহৃত হয় এবং XYLineChart বা Scatter Plot এর জন্য ডেটা পয়েন্ট রেন্ডার করে।
  3. PieSectionRenderer: এটি Pie Chart এর জন্য ব্যবহৃত হয় এবং প্রতিটি পি-সেকশনের জন্য রেন্ডারিং স্টাইল কাস্টমাইজ করতে সাহায্য করে।

উদাহরণ: CategoryItemRenderer ব্যবহার করে Line Chart এর Line Thickness কাস্টমাইজ করা

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.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;

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

public class LineChartWithRendererExample {

    public static JPanel createChartPanel() {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(1.0, "Series1", "Jan");
        dataset.addValue(4.0, "Series1", "Feb");
        dataset.addValue(3.0, "Series1", "Mar");
        dataset.addValue(5.0, "Series1", "Apr");

        // Line Chart তৈরি করা
        JFreeChart chart = ChartFactory.createLineChart(
                "Line Chart with Custom Renderer", // Chart Title
                "Month",                          // X-Axis Label
                "Value",                          // Y-Axis Label
                dataset                           // Dataset
        );

        // CategoryPlot এ Renderer কাস্টমাইজ করা
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        LineAndShapeRenderer renderer = new LineAndShapeRenderer();
        renderer.setSeriesStroke(0, new BasicStroke(3.0f)); // Line thickness set to 3.0f
        plot.setRenderer(renderer);

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

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

ব্যাখ্যা:

  • LineAndShapeRenderer ব্যবহার করে লাইন স্টাইল কাস্টমাইজ করা হয়েছে।
  • renderer.setSeriesStroke(0, new BasicStroke(3.0f)); এর মাধ্যমে প্রথম সিরিজের লাইন পুরুত্ব ৩ পিক্সেল করা হয়েছে।
  • CategoryPlot ব্যবহার করে Renderer সেট করা হয়েছে।

3. Dataset এবং Renderer এর মধ্যে সম্পর্ক

Dataset এবং Renderer একে অপরের সাথে যোগাযোগ করে ডেটাকে ভিজ্যুয়ালি উপস্থাপন করতে। Dataset ডেটা ধারণ করে, এবং Renderer সেই ডেটা প্রদর্শন করে। Dataset সাধারণত সংখ্যাত্মক বা ক্যাটেগরি ডেটা ধারণ করে, এবং Renderer সেটি চার্টে কিভাবে দেখানো হবে তা নিয়ন্ত্রণ করে।

  • Dataset ডেটার গঠন নির্ধারণ করে (যেমন X এবং Y মানের সম্পর্ক)।
  • Renderer সেই ডেটাকে চার্টে রেন্ডার করে, যেমন লাইন স্টাইল, বার রঙ, এবং আকার নির্ধারণ করা।

সারাংশ

Dataset এবং Renderer জেফ্রিচার্টের প্রধান দুটি উপাদান যা চার্টের ডেটা এবং তার ভিজ্যুয়াল উপস্থাপনাকে নিয়ন্ত্রণ করে। Dataset ডেটাকে সংগ্রহ করে এবং Renderer সেই ডেটাকে রেন্ডার বা প্রদর্শন করে। আপনি বিভিন্ন ধরনের Dataset ব্যবহার করতে পারেন, যেমন XYDataset, CategoryDataset, PieDataset, ইত্যাদি, এবং সেই ডেটাকে Renderer এর মাধ্যমে কাস্টমাইজ করতে পারেন, যেমন লাইন রঙ, পুরুত্ব, শেপ, এবং আরও অনেক কিছু। JFreeChart এই উপাদানগুলির মাধ্যমে চার্টের ভিজ্যুয়াল উপস্থাপনাকে অত্যন্ত কাস্টমাইজযোগ্য এবং ব্যবহারযোগ্য করে তোলে।

Content added By

JFreeChart একটি শক্তিশালী লাইব্রেরি যা ডেটা ভিজ্যুয়ালাইজেশনের জন্য ব্যবহৃত হয়। চার্টের জন্য ডেটা প্রদর্শন করতে, সাধারণত Dataset ব্যবহার করা হয়, যেটি বিভিন্ন ধরনের হতে পারে, যেমন CategoryDataset, XYDataset, বা TimeSeriesDataset। যখন আপনি একটি কাস্টম ডেটাসেট তৈরি করতে চান, তখন আপনাকে একটি Dataset কাস্টমাইজ করতে হবে যা আপনার প্রয়োজন অনুযায়ী ডেটা প্রদান করবে।

এই গাইডে, আমরা দেখব কিভাবে JFreeChart দিয়ে একটি Custom Dataset তৈরি করা যায় এবং এটি চার্টে প্রদর্শন করা যায়।


1. Custom Dataset কী?

Custom Dataset হল এমন একটি ডেটাসেট যা আপনি নিজের প্রয়োজন অনুসারে কাস্টমাইজ করে তৈরি করেন। এটি আপনাকে একটি চার্টের জন্য নির্দিষ্ট ডেটা পয়েন্ট বা মান প্রদান করতে সাহায্য করে। JFreeChart বিভিন্ন ধরনের ডেটাসেট সাপোর্ট করে, তবে আপনি DefaultCategoryDataset বা XYSeriesCollection ইত্যাদি ব্যবহার করে কাস্টম ডেটাসেট তৈরি করতে পারেন।


2. Custom Dataset তৈরি করার উদাহরণ

এখানে আমরা একটি সাধারণ Bar Chart এবং Line Chart তৈরি করার উদাহরণ দেখাবো, যেখানে কাস্টম ডেটাসেট ব্যবহার করা হবে।

উদাহরণ 1: Custom Dataset for Bar Chart

Bar Chart তৈরি করতে আমরা DefaultCategoryDataset ব্যবহার করব, যেখানে কিছু কাস্টম ডেটা যোগ করা হবে।

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

public class CustomDatasetBarChartExample {

    public static JPanel createChartPanel() {
        // Custom Dataset তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        
        // কাস্টম ডেটা যোগ করা (Category এবং Value)
        dataset.addValue(10, "Series1", "Jan");
        dataset.addValue(20, "Series1", "Feb");
        dataset.addValue(30, "Series1", "Mar");
        dataset.addValue(40, "Series1", "Apr");
        
        // Bar Chart তৈরি করা
        JFreeChart chart = ChartFactory.createBarChart(
                "Monthly Sales",     // Chart Title
                "Month",             // X-Axis Label
                "Sales Amount",      // Y-Axis Label
                dataset,             // Dataset
                org.jfree.chart.plot.PlotOrientation.VERTICAL, // Plot Orientation
                true,                // Legend
                true,                // Tooltips
                false                // URLs
        );

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

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

ব্যাখ্যা:

  1. DefaultCategoryDataset ব্যবহার করা হয়েছে কাস্টম ডেটা যোগ করার জন্য। এখানে প্রতি মাসে বিক্রয়ের পরিমাণ যোগ করা হয়েছে।
  2. ChartFactory.createBarChart() মেথডের মাধ্যমে একটি Bar Chart তৈরি করা হয়েছে।
  3. ChartPanel ব্যবহার করে গ্রাফ GUI তে প্রদর্শন করা হয়েছে।

উদাহরণ 2: Custom Dataset for Line Chart

এবার আমরা Line Chart তৈরি করব এবং XYSeriesCollection ব্যবহার করে কাস্টম ডেটাসেট তৈরি করব।

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.*;

public class CustomDatasetLineChartExample {

    public static JPanel createChartPanel() {
        // Custom Dataset তৈরি করা
        XYSeries series = new XYSeries("Temperature Data");
        
        // কাস্টম ডেটা যোগ করা (X এবং Y মান)
        series.add(1, 30);
        series.add(2, 35);
        series.add(3, 40);
        series.add(4, 45);
        series.add(5, 50);
        
        // XYSeriesCollection তৈরি করা
        XYSeriesCollection dataset = new XYSeriesCollection(series);
        
        // Line Chart তৈরি করা
        JFreeChart chart = ChartFactory.createXYLineChart(
                "Temperature Over Time",  // Chart Title
                "Time (Days)",            // X-Axis Label
                "Temperature (°C)",       // Y-Axis Label
                dataset,                  // Dataset
                org.jfree.chart.plot.PlotOrientation.VERTICAL, // Plot Orientation
                true,                     // Legend
                true,                     // Tooltips
                false                     // URLs
        );

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

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

ব্যাখ্যা:

  1. XYSeries ব্যবহার করে কাস্টম ডেটাসেট তৈরি করা হয়েছে, যেখানে আমরা প্রতিটি দিনের তাপমাত্রার ডেটা যোগ করেছি।
  2. XYSeriesCollection ডেটাসেট হিসেবে কাজ করছে।
  3. ChartFactory.createXYLineChart() মেথড ব্যবহার করে একটি Line Chart তৈরি করা হয়েছে।

3. Custom Dataset তৈরি করার জন্য অন্যান্য পদ্ধতি

আপনি যদি আরও কাস্টম ডেটাসেট তৈরি করতে চান, তবে CategoryDataset, XYDataset, বা TimeSeriesDataset ব্যবহার করে বিভিন্ন ধরনের ডেটা সংগ্রহ এবং উপস্থাপন করতে পারেন। নিম্নলিখিত কিছু পদ্ধতি ব্যবহার করে কাস্টম ডেটাসেট তৈরি করা যেতে পারে:

3.1. CategoryDataset ব্যবহার

CategoryDataset সাধারণত Bar Chart এবং Line Chart এর জন্য ব্যবহৃত হয়, যেখানে প্রতিটি ক্যাটেগরির জন্য একটি মান সংরক্ষণ করা হয়। আপনি DefaultCategoryDataset বা CategoryDataset এর ইনপুট হিসেবে কাস্টম ডেটা যোগ করতে পারেন।

3.2. XYDataset ব্যবহার

XYDataset ব্যবহার করে আপনি XYChart (যেমন, Scatter Plot বা Line Chart) তৈরি করতে পারেন, যেখানে X এবং Y এক্সিস এর জন্য নির্দিষ্ট মান থাকবে।


4. কাস্টম ডেটাসেট কনফিগারেশন কাস্টমাইজেশন

কাস্টম ডেটাসেট তৈরি করার পর আপনি চার্টের কিছু কাস্টমাইজেশন করতে পারেন, যেমন:

  1. Line Style এবং Color পরিবর্তন:

    plot.getRenderer().setSeriesPaint(0, Color.RED); // Set line color to red
    plot.getRenderer().setSeriesStroke(0, new BasicStroke(3.0f)); // Set line thickness
    
  2. Axis কাস্টমাইজ:

    plot.getDomainAxis().setLabel("Month");
    plot.getRangeAxis().setLabel("Sales Amount");
    
  3. Legend Position পরিবর্তন:

    chart.getLegend().setPosition(RectangleEdge.BOTTOM);
    

সারাংশ

JFreeChart এর মাধ্যমে Custom Dataset তৈরি করা একটি শক্তিশালী এবং সহজ পদ্ধতি, যা আপনাকে আপনার প্রয়োজন অনুযায়ী ডেটা সংগ্রহ এবং উপস্থাপন করতে সহায়তা করে। আপনি DefaultCategoryDataset এবং XYSeriesCollection এর মাধ্যমে কাস্টম ডেটাসেট তৈরি করতে পারেন এবং সেই ডেটা দিয়ে বিভিন্ন ধরনের চার্ট যেমন Bar Chart, Line Chart, এবং Scatter Plot তৈরি করতে পারেন। JFreeChart দিয়ে আপনি আপনার ডেটার ভিজ্যুয়াল রিপ্রেজেন্টেশন কাস্টমাইজ করে আরও কার্যকরী এবং স্পষ্ট চার্ট তৈরি করতে পারবেন।

Content added By

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

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

Custom Renderer কি?

Custom Renderer ব্যবহার করা হয় চার্টের ডেটা পয়েন্টের দৃশ্যমান স্টাইল কাস্টমাইজ করতে। এটি আপনাকে বিভিন্ন শেপ, রঙ, বা লাইন স্টাইল ব্যবহার করে ডেটার উপস্থাপনাকে আরও আকর্ষণীয় এবং প্রাসঙ্গিক করে তুলতে সাহায্য করে। যেমন আপনি একটি বার চার্টে বিভিন্ন রঙের বার, লাইন চার্টে বিভিন্ন স্টাইল বা সেমিকোলন ব্যবহার করতে পারেন।


উদাহরণ: Custom Renderer ব্যবহার করে Advanced Bar Chart তৈরি করা

ধরা যাক, আপনি একটি Bar Chart তৈরি করতে চান যেখানে প্রতিটি বার আলাদা রঙে প্রদর্শিত হবে, এবং কিছু নির্দিষ্ট শর্তে বারের স্টাইল কাস্টমাইজ করা হবে। নিচে এমন একটি উদাহরণ দেওয়া হল যেখানে Custom Renderer ব্যবহার করে বারের রঙ এবং শেপ পরিবর্তন করা হয়েছে।

উদাহরণ: Advanced Bar Chart with Custom Renderer

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

    public static JPanel createChartPanel() {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(100, "Category 1", "Jan");
        dataset.addValue(200, "Category 1", "Feb");
        dataset.addValue(300, "Category 1", "Mar");
        dataset.addValue(150, "Category 1", "Apr");

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

        // Custom Renderer সেট করা
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        BarRenderer renderer = new BarRenderer() {
            @Override
            public Paint getItemPaint(int row, int column) {
                if (column == 1) {
                    return Color.RED; // 2nd month (February) will have red bars
                }
                return Color.BLUE; // All other months will have blue bars
            }

            @Override
            public Stroke getItemStroke(int row, int column) {
                if (column == 0) {
                    return new BasicStroke(3.0f); // Jan bar will have thicker border
                }
                return super.getItemStroke(row, column); // Default stroke for other bars
            }
        };

        plot.setDomainGridlinesVisible(true);
        plot.setDomainGridlinePaint(Color.GRAY);
        plot.setRangeGridlinesVisible(true);
        plot.setRangeGridlinePaint(Color.GRAY);

        // Apply the custom renderer
        plot.setRenderer(renderer);

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

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

ব্যাখ্যা:

  • Custom Renderer তৈরি করা হয়েছে BarRenderer ক্লাসকে ওভাররাইড করে। এখানে getItemPaint() মেথডে নির্দিষ্ট কলামের জন্য রঙ কাস্টমাইজ করা হয়েছে। উদাহরণস্বরূপ, ফেব্রুয়ারি মাসের জন্য বার রঙ Red এবং অন্যান্য মাসের জন্য বার রঙ Blue করা হয়েছে।
  • getItemStroke() মেথড ব্যবহার করে আমরা জানালাম যে জানুয়ারির বারটির সীমান্ত পুরু হবে।
  • CategoryPlot এর মাধ্যমে চার্টের গ্রিডলাইন এবং অন্যান্য বৈশিষ্ট্য কাস্টমাইজ করা হয়েছে।

উদাহরণ: Custom Renderer ব্যবহার করে Advanced Line Chart

এখন, আমরা Line Chart কাস্টমাইজ করার জন্য Custom Renderer ব্যবহার করব, যেখানে প্রতিটি লাইন আলাদা রঙ এবং স্টাইল পাবে।

উদাহরণ: Advanced Line Chart with Custom Renderer

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.*;

public class AdvancedLineChartExample {

    public static JPanel createChartPanel() {
        // ডেটাসেট তৈরি করা
        XYSeries series1 = new XYSeries("Series 1");
        series1.add(1, 1);
        series1.add(2, 4);
        series1.add(3, 3);
        series1.add(4, 5);

        XYSeries series2 = new XYSeries("Series 2");
        series2.add(1, 3);
        series2.add(2, 2);
        series2.add(3, 5);
        series2.add(4, 6);

        XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(series1);
        dataset.addSeries(series2);

        // Line Chart তৈরি করা
        JFreeChart chart = ChartFactory.createXYLineChart(
                "Advanced Line 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
        );

        // Custom Line Renderer সেট করা
        XYPlot plot = (XYPlot) chart.getPlot();
        XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();

        // Series 1 এর জন্য কাস্টম রঙ এবং স্টাইল
        renderer.setSeriesPaint(0, Color.RED);  // Series 1: Red color
        renderer.setSeriesStroke(0, new BasicStroke(2.0f)); // Series 1: Line thickness 2.0f

        // Series 2 এর জন্য কাস্টম রঙ এবং স্টাইল
        renderer.setSeriesPaint(1, Color.BLUE);  // Series 2: Blue color
        renderer.setSeriesStroke(1, new BasicStroke(3.0f)); // Series 2: Line thickness 3.0f

        // Custom Renderer set করা plot এ
        plot.setRenderer(renderer);

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

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

ব্যাখ্যা:

  • XYLineAndShapeRenderer ক্লাস ব্যবহার করা হয়েছে, যা Line Chart এর লাইন এবং শেপ কাস্টমাইজ করতে সক্ষম।
  • setSeriesPaint() দিয়ে প্রতিটি সিরিজের রঙ নির্ধারণ করা হয়েছে, যেমন Series 1 এর রঙ Red এবং Series 2 এর রঙ Blue
  • setSeriesStroke() মেথডের মাধ্যমে লাইন পুরুত্ব কাস্টমাইজ করা হয়েছে।

3. Candlestick Chart কাস্টমাইজ করা

Candlestick Chart স্টক মার্কেট বা ফাইনান্সিয়াল ডেটার জন্য খুবই জনপ্রিয়, যেখানে ওপেন, হাই, লো এবং ক্লোজ প্রাইস দেখানো হয়। এখানে আমরা একটি Candlestick Chart কাস্টমাইজ করতে Custom Renderer ব্যবহার করব।

উদাহরণ: Candlestick Chart with Custom Renderer

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.XYItemRenderer;
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 CandlestickChartExample {

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

        XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(series);

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

        // Custom Renderer
        XYPlot plot = (XYPlot) chart.getPlot();
        XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false); // Rendering the shape
        renderer.setSeriesPaint(0, Color.RED); // Set candlestick color to red
        plot.setRenderer(renderer);

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

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

ব্যাখ্যা:

  • Candlestick এর জন্য আমরা XYSeries ব্যবহার করেছি এবং উপরের কাস্টম রেন্ডারিং পদ্ধতিগুলি অনুসরণ করেছি।
  • setSeriesPaint() ব্যবহার করে আমরা ক্যান্ডেলস্টিকের রঙ কাস্টমাইজ করেছি এবং **XYItem
Content added By
Promotion

Are you sure to start over?

Loading...