Bar Chart তৈরি করা

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

349

JFreeChart একটি শক্তিশালী Java লাইব্রেরি যা গ্রাফ এবং চার্ট তৈরির জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি বিভিন্ন ধরনের চার্ট যেমন Bar Chart, Line Chart, Pie Chart ইত্যাদি তৈরি করতে পারেন। এই অধ্যায়ে, আমরা Bar Chart তৈরি করার জন্য JFreeChart এর ব্যবহার দেখব।

Bar Chart কি?

Bar Chart হলো একটি ধরনের চার্ট যা ডাটা ভিজ্যুয়ালাইজ করতে সোজা অথবা অনুভূমিক বার ব্যবহার করে। এটি সাধারণত শ্রেণীভিত্তিক বা ক্যাটেগোরিক্যাল ডাটা উপস্থাপন করতে ব্যবহৃত হয়। এক্স অক্ষ (X-axis) সাধারণত ক্যাটেগরি বা শ্রেণীকে প্রতিনিধিত্ব করে এবং ওয়াই অক্ষ (Y-axis) ডাটার মান বা মাপকে নির্দেশ করে।


Bar Chart তৈরি করার জন্য JFreeChart কনফিগারেশন

1. JFreeChart ইনস্টলেশন

JFreeChart ব্যবহার করতে হলে প্রথমে আপনি JFreeChart লাইব্রেরি আপনার প্রোজেক্টে যুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তবে আপনার pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যুক্ত করতে পারেন:

<dependency>
    <groupId>org.jfree</groupId>
    <artifactId>jfreechart</artifactId>
    <version>1.5.3</version>
</dependency>

2. Bar Chart তৈরি করা

এখন, নিচে একটি সাধারণ উদাহরণ দেখানো হল যেখানে একটি Bar Chart তৈরি করা হয়েছে। এই উদাহরণে DefaultCategoryDataset ব্যবহার করে ডেটা সেট তৈরি করা হয়েছে এবং তারপর ChartFactory ব্যবহার করে একটি Bar Chart তৈরি করা হয়েছে।

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

    public static void main(String[] args) {
        // ডেটাসেট তৈরি করা
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        
        // ডেটা যোগ করা (Value, Category, Time)
        dataset.addValue(5, "Category 1", "January");
        dataset.addValue(8, "Category 1", "February");
        dataset.addValue(4, "Category 1", "March");
        dataset.addValue(6, "Category 1", "April");
        
        dataset.addValue(3, "Category 2", "January");
        dataset.addValue(2, "Category 2", "February");
        dataset.addValue(7, "Category 2", "March");
        dataset.addValue(1, "Category 2", "April");

        // বার চার্ট তৈরি করা
        JFreeChart barChart = ChartFactory.createBarChart(
                "Monthly Data",       // Chart title
                "Month",              // X-axis Label
                "Value",              // Y-axis Label
                dataset               // Dataset
        );
        
        // ChartPanel তৈরি করে বার চার্টকে GUI তে যোগ করা
        ChartPanel chartPanel = new ChartPanel(barChart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
        
        // JFrame তৈরি করে চার্টটি সেট করা
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(chartPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

কোড ব্যাখ্যা

  1. DefaultCategoryDataset:
    • এটি একটি ডেটাসেট যা Category (ক্যাটেগরি) এবং Value (মূল্য) সম্পর্কিত ডাটা ধারণ করে। এখানে addValue(value, rowKey, columnKey) মেথড ব্যবহার করে ডাটা সেট করা হয়।
    • rowKey হলো ক্যাটেগরি (যেমন: "Category 1", "Category 2") এবং columnKey হলো এক্স অক্ষের মান (যেমন: "January", "February")।
  2. ChartFactory.createBarChart():
    • এটি একটি মেথড যা বার চার্ট তৈরি করে। এতে চারটি প্যারামিটার রয়েছে:
      • চার্টের টাইটেল,
      • এক্স অক্ষের লেবেল,
      • ওয়াই অক্ষের লেবেল,
      • ডেটাসেট (এখানে dataset প্যারামিটারটি দেওয়া হয়েছে)।
  3. ChartPanel:
    • এটি একটি প্যানেল যেখানে চার্টটি রেন্ডার করা হয় এবং সেই প্যানেলটি JFrame এ যোগ করা হয়।
  4. JFrame:
    • এটি একটি GUI উপাদান যেখানে আপনার চার্টটি প্রদর্শিত হবে।

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

JFreeChart এর মাধ্যমে আপনি চার্ট কাস্টমাইজ করতে পারেন, যেমন:

  • বারের রঙ পরিবর্তন: আপনি প্রতিটি বার বা সিরিজের রঙ পরিবর্তন করতে পারেন। নিচে এর উদাহরণ দেওয়া হল:

    barChart.getCategoryPlot().getRenderer().setSeriesPaint(0, Color.RED); // প্রথম সিরিজের বার রঙ
    barChart.getCategoryPlot().getRenderer().setSeriesPaint(1, Color.GREEN); // দ্বিতীয় সিরিজের বার রঙ
    
  • টাইটেল কাস্টমাইজেশন: আপনি চার্টের টাইটেল কাস্টমাইজ করতে পারেন:

    barChart.setTitle("Custom Chart Title");
    
  • অক্ষের লেবেল কাস্টমাইজেশন: আপনি এক্স এবং ওয়াই অক্ষের লেবেল কাস্টমাইজ করতে পারেন:

    barChart.getCategoryPlot().getDomainAxis().setLabel("Custom X-Axis Label");
    barChart.getCategoryPlot().getRangeAxis().setLabel("Custom Y-Axis Label");
    

Conclusion

JFreeChart ব্যবহার করে Java তে খুব সহজেই Bar Chart তৈরি করা সম্ভব। এটি অত্যন্ত শক্তিশালী এবং কাস্টমাইজযোগ্য লাইব্রেরি, যা আপনি ডাটা ভিজ্যুয়ালাইজেশনের জন্য যেকোনো ধরনের চার্ট তৈরি করতে ব্যবহার করতে পারেন। JFreeChart এর মাধ্যমে আপনি একটি ইন্টারঅ্যাক্টিভ এবং ভিজ্যুয়াল ডাটা উপস্থাপন করতে পারবেন যা ব্যবহারকারীদের জন্য অনেক সহায়ক।

Content added By

Bar Chart হল একটি গ্রাফিক্যাল উপস্থাপনা যা ডেটার তুলনা দেখাতে ব্যবহৃত হয়, যেখানে বার বা সারি বিভিন্ন মানের প্রতিনিধিত্ব করে। JFreeChart ব্যবহার করে আপনি Vertical Bar Chart এবং Horizontal Bar Chart তৈরি করতে পারেন। এই দুটি ধরনের চার্ট ডেটার উপস্থাপনায় কিছু ভিন্নতা এবং বিশেষত্ব রাখে, এবং তাদের উপযুক্ত ব্যবহার ক্ষেত্রও আলাদা। নিচে এই দুটি প্রকারভেদ এবং তাদের ব্যবহারের ক্ষেত্রে বিস্তারিত আলোচনা করা হল।


১. Vertical Bar Chart

Vertical Bar Chart হল একটি চার্ট যেখানে বারগুলি উল্লম্বভাবে (Vertical) স্থাপন করা হয়। এই ধরনের চার্টে X-অক্ষ সাধারণত ক্যাটেগরি বা টাইম পিরিয়ডের প্রতিনিধিত্ব করে এবং Y-অক্ষ হল মান বা পরিমাণের প্রতিনিধিত্বকারী স্কেল। প্রতিটি বার X-অক্ষে প্রদর্শিত ক্যাটেগরির মানের ওপর ভিত্তি করে Y-অক্ষে উচ্চতা অর্জন করে।

Vertical Bar Chart এর সুবিধা:

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

উদাহরণ: Vertical Bar Chart তৈরি করা

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

public class VerticalBarChartExample {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10.0, "Sales", "January");
        dataset.addValue(20.0, "Sales", "February");
        dataset.addValue(30.0, "Sales", "March");
        dataset.addValue(40.0, "Sales", "April");

        // চার্ট তৈরি
        JFreeChart chart = ChartFactory.createBarChart(
            "Monthly Sales",   // Title
            "Month",            // X-axis Label
            "Sales (in USD)",   // Y-axis Label
            dataset             // Dataset
        );

        // চার্ট প্যানেল তৈরি
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(chartPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

এই কোডে একটি Vertical Bar Chart তৈরি করা হয়েছে যা মাসিক বিক্রির পরিমাণ দেখায়।


২. Horizontal Bar Chart

Horizontal Bar Chart হল একটি চার্ট যেখানে বারগুলি অনুভূমিকভাবে (Horizontal) স্থাপন করা হয়। এই ধরনের চার্টে Y-অক্ষ সাধারণত ক্যাটেগরি বা টাইম পিরিয়ডের প্রতিনিধিত্ব করে এবং X-অক্ষ হল মান বা পরিমাণের প্রতিনিধিত্বকারী স্কেল। প্রতিটি বার Y-অক্ষে প্রদর্শিত ক্যাটেগরির মানের ওপর ভিত্তি করে X-অক্ষে লম্বা বা ছোট হবে।

Horizontal Bar Chart এর সুবিধা:

  • যখন ক্যাটেগরির নাম দীর্ঘ হয়, তখন Horizontal Bar Chart অধিক উপযোগী হয়।
  • এটি সাধারণত তুলনা করতে সহজ হয় যখন অনেকগুলি ক্যাটেগরি থাকে, এবং বিশেষভাবে ব্যবহারকারীর জন্য স্পষ্টতর হয়।
  • প্রাথমিকভাবে ক্যাটেগরি এবং তাদের পরিসংখ্যান দেখাতে ব্যবহৃত হয়, যেমন দেশের অর্থনীতি, শিক্ষার পরিসংখ্যান ইত্যাদি।

উদাহরণ: Horizontal Bar Chart তৈরি করা

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

public class HorizontalBarChartExample {
    public static void main(String[] args) {
        // ডেটাসেট তৈরি
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10.0, "Sales", "January");
        dataset.addValue(20.0, "Sales", "February");
        dataset.addValue(30.0, "Sales", "March");
        dataset.addValue(40.0, "Sales", "April");

        // Horizontal Bar Chart তৈরি
        JFreeChart chart = ChartFactory.createBarChart(
            "Monthly Sales",   // Title
            "Sales (in USD)",   // X-axis Label
            "Month",            // Y-axis Label
            dataset,            // Dataset
            org.jfree.chart.plot.PlotOrientation.HORIZONTAL // Horizontal orientation
        );

        // চার্ট প্যানেল তৈরি
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(chartPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

এই কোডে একটি Horizontal Bar Chart তৈরি করা হয়েছে যা মাসিক বিক্রির পরিমাণ দেখায়, কিন্তু এখানে বারগুলি অনুভূমিকভাবে প্রদর্শিত হয়েছে।


Vertical এবং Horizontal Bar Chart এর মধ্যে পার্থক্য

প্যারামিটারVertical Bar ChartHorizontal Bar Chart
বারের দিকবারগুলি উল্লম্বভাবে (Vertical) থাকে।বারগুলি অনুভূমিকভাবে (Horizontal) থাকে।
ব্যবহারযখন ক্যাটেগরি সংখ্যা কম এবং X-অক্ষে সহজে জায়গা পাওয়া যায়।যখন ক্যাটেগরি সংখ্যা বেশি বা ক্যাটেগরির নাম দীর্ঘ হয়।
অবস্থানX-অক্ষ সাধারণত টাইম পিরিয়ড বা ক্যাটেগরি, Y-অক্ষ মান বা পরিমাণ।Y-অক্ষ সাধারণত ক্যাটেগরি বা টাইম পিরিয়ড, X-অক্ষ মান বা পরিমাণ।
বিক্রির ক্ষেত্রছোট ডেটাসেট বা কম ক্যাটেগরি জন্য আদর্শ।বড় ডেটাসেট বা দীর্ঘ ক্যাটেগরি নামের জন্য আদর্শ।
বিশ্লেষণসহজতর, বিশেষত সময়ের সাথে পরিবর্তন বা তুলনার জন্য।ক্যাটেগরি নামের সমস্যা না থাকলে এটি বিশ্লেষণে সুবিধাজনক।

সারাংশ

Vertical Bar Chart এবং Horizontal Bar Chart JFreeChart এর মাধ্যমে তৈরি করা যেতে পারে এবং এগুলির মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। Vertical Bar Chart সাধারণত ছোট ডেটাসেট এবং সংখ্যার তুলনা জন্য উপযুক্ত, যেখানে Horizontal Bar Chart বড় ডেটাসেট এবং দীর্ঘ ক্যাটেগরি নামের জন্য বেশি উপযোগী। JFreeChart এই দুই ধরনের চার্টের মাধ্যমে ডেটা ভিজুয়ালাইজেশনকে আরও কার্যকর এবং স্পষ্ট করে তোলে, যা ডেটা বিশ্লেষণ এবং সিদ্ধান্ত গ্রহণে সহায়তা করে।

Content added By

JFreeChart এর মাধ্যমে CategoryDataset ব্যবহার করে বার চার্ট তৈরি করা একটি সাধারণ প্রক্রিয়া। CategoryDataset হল এমন একটি ডেটা স্ট্রাকচার যা ক্যাটেগরি বা শ্রেণীভুক্ত ডেটা ধরে রাখে। এটি বার চার্ট (bar chart) এবং অন্যান্য ধরনের ক্যাটেগরি ভিত্তিক চার্ট তৈরি করতে ব্যবহৃত হয়।

JFreeChart-এ CategoryDataset সাধারণত DefaultCategoryDataset হিসেবে ব্যবহৃত হয়, যা category (যেমন: মাস, বিভাগ, বা অন্যান্য শ্রেণী) এবং value (যেমন: সংখ্যার মান বা রেটিং) ধারণ করে। এই ডেটাসেটটি একটি Bar Chart বা অন্য যেকোনো ক্যাটেগরি ভিত্তিক চার্টের জন্য ইনপুট হিসেবে ব্যবহার করা হয়।

নিচে একটি উদাহরণ দেওয়া হল যেখানে CategoryDataset ব্যবহার করে Vertical Bar Chart তৈরি করা হয়েছে।


উদাহরণ: CategoryDataset ব্যবহার করে Vertical Bar Chart তৈরি

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

public class VerticalBarChartExample {

    public static void main(String[] args) {
        // ১. ডেটাসেট তৈরি
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        // ২. ডেটা যোগ করা
        dataset.addValue(4.0, "Sales", "January");
        dataset.addValue(3.0, "Sales", "February");
        dataset.addValue(5.0, "Sales", "March");
        dataset.addValue(2.0, "Sales", "April");
        dataset.addValue(6.0, "Sales", "May");

        // ৩. বার চার্ট তৈরি
        JFreeChart chart = ChartFactory.createBarChart(
            "Monthly Sales Data",  // Title
            "Month",               // X-axis label
            "Sales ($)",           // Y-axis label
            dataset,               // Dataset
            org.jfree.chart.plot.PlotOrientation.VERTICAL,  // Orientation: Vertical
            true,                  // Include legend
            true,                  // Tooltips
            false                  // URLs
        );

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

        // ৫. JFrame এ চার্ট প্রদর্শন
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(chartPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

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

  1. ডেটাসেট তৈরি:
    • DefaultCategoryDataset একটি সাধারণ ক্লাস যা ক্যাটেগরি ভিত্তিক ডেটা ধারণ করে।
    • addValue() মেথড ব্যবহার করে আপনি ডেটা যোগ করতে পারেন। এখানে, আমরা "Sales" নামক সিরিজ তৈরি করেছি এবং জানুয়ারি থেকে মে মাস পর্যন্ত বিক্রির তথ্য যুক্ত করেছি।
  2. বার চার্ট তৈরি:
    • ChartFactory.createBarChart() মেথড ব্যবহার করে আমরা বার চার্ট তৈরি করেছি। এই মেথডে কয়েকটি প্যারামিটার ব্যবহার করেছি:
      • Title: চার্টের শিরোনাম (Monthly Sales Data)
      • X-axis label: X অক্ষের লেবেল (Month)
      • Y-axis label: Y অক্ষের লেবেল (Sales ($))
      • Dataset: ডেটাসেট যা থেকে ডেটা আসবে।
      • Orientation: Orientation সেট করা হয়েছে Vertical, অর্থাৎ আমাদের বার চার্টটি উল্লম্ব হবে।
  3. ChartPanel এবং JFrame:
    • ChartPanel ক্লাস ব্যবহার করে আমরা তৈরি করা চার্টটিকে একটি প্যানেলে সংযুক্ত করেছি।
    • তারপর, এই প্যানেলটিকে একটি JFrame-এ যোগ করে টেস্ট চালিয়েছি এবং চার্টটি প্রদর্শন করেছি।

Horizontal Bar Chart (অনুভূমিক বার চার্ট)

আপনি যদি অনুভূমিক বার চার্ট তৈরি করতে চান, তাহলে PlotOrientation.HORIZONTAL ব্যবহার করতে হবে। নিচে একটি Horizontal Bar Chart তৈরির উদাহরণ দেওয়া হল:

উদাহরণ: Horizontal Bar Chart

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

public class HorizontalBarChartExample {

    public static void main(String[] args) {
        // ১. ডেটাসেট তৈরি
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        // ২. ডেটা যোগ করা
        dataset.addValue(4.0, "Sales", "January");
        dataset.addValue(3.0, "Sales", "February");
        dataset.addValue(5.0, "Sales", "March");
        dataset.addValue(2.0, "Sales", "April");
        dataset.addValue(6.0, "Sales", "May");

        // ৩. বার চার্ট তৈরি (Horizontal Orientation)
        JFreeChart chart = ChartFactory.createBarChart(
            "Monthly Sales Data",  // Title
            "Sales ($)",           // X-axis label
            "Month",               // Y-axis label
            dataset,               // Dataset
            org.jfree.chart.plot.PlotOrientation.HORIZONTAL,  // Orientation: Horizontal
            true,                  // Include legend
            true,                  // Tooltips
            false                  // URLs
        );

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

        // ৫. JFrame এ চার্ট প্রদর্শন
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(chartPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

এখানে আমরা PlotOrientation.HORIZONTAL ব্যবহার করে চার্টের অক্ষগুলির অরিয়েন্টেশন পরিবর্তন করেছি এবং Horizontal Bar Chart তৈরি করেছি।


সারাংশ

JFreeChart ব্যবহার করে আপনি সহজেই CategoryDataset ব্যবহার করে বার চার্ট তৈরি করতে পারেন। এর মধ্যে Vertical Bar Chart এবং Horizontal Bar Chart দুটি প্রধান ধরনের চার্ট রয়েছে, যেগুলোর অরিয়েন্টেশন এবং অন্যান্য কনফিগারেশন পরিবর্তন করে বিভিন্ন ভিজুয়াল রিপ্রেজেন্টেশন তৈরি করা যায়। DefaultCategoryDataset ব্যবহার করে আপনি ডেটা যুক্ত করতে পারেন এবং তারপর সেই ডেটা দিয়ে একটি সুন্দর, কাস্টমাইজযোগ্য চার্ট তৈরি করতে পারেন। JFreeChart অত্যন্ত কার্যকরী এবং এটি Java প্রোগ্রামিংয়ে ডেটা ভিজুয়ালাইজেশন করতে খুবই জনপ্রিয়।

Content added By

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

এই টিউটোরিয়ালে আমরা আলোচনা করব কিভাবে JFreeChart ব্যবহার করে Bar Color, Bar Width, এবং Bar Labels কাস্টমাইজ করা যায়।


1. Bar Color Customization

JFreeChart এ Bar Chart এর প্রতিটি বার (bar) এর রং কাস্টমাইজ করা যায়, যাতে প্রতিটি সেগমেন্ট আলাদা রঙে প্রদর্শিত হয় এবং আরও দৃশ্যমান হয়। এর জন্য, BarRenderer এর setSeriesPaint() মেথড ব্যবহার করা হয়।

উদাহরণ:

নিচে একটি উদাহরণ দেওয়া হয়েছে যেখানে একটি 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.chart.plot.CategoryPlot;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.ui.ApplicationFrame;
import org.jfree.chart.ui.RefineryUtilities;
import java.awt.Color;

public class BarChartExample extends ApplicationFrame {

    public BarChartExample(String title) {
        super(title);
        JFreeChart chart = createChart(createDataset());
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
        setContentPane(chartPanel);
    }

    private DefaultCategoryDataset createDataset() {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(1.0, "Category 1", "Jan");
        dataset.addValue(4.0, "Category 1", "Feb");
        dataset.addValue(3.0, "Category 1", "Mar");
        return dataset;
    }

    private JFreeChart createChart(DefaultCategoryDataset dataset) {
        JFreeChart chart = ChartFactory.createBarChart(
            "Bar Chart Example",   // chart title
            "Month",               // x-axis label
            "Value",               // y-axis label
            dataset,               // dataset
            PlotOrientation.VERTICAL,  // plot orientation
            true,                  // include legend
            true                   // tooltips
        );
        
        // Customize the bar color
        CategoryPlot plot = chart.getCategoryPlot();
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        renderer.setSeriesPaint(0, Color.BLUE);  // Set the bar color to blue

        return chart;
    }

    public static void main(String[] args) {
        BarChartExample chart = new BarChartExample("Bar Chart Example");
        chart.pack();
        RefineryUtilities.centerFrameOnScreen(chart);
        chart.setVisible(true);
    }
}

এখানে, renderer.setSeriesPaint(0, Color.BLUE); কোডের মাধ্যমে প্রথম সিরিজের (Series 0) বারগুলোর রঙ ব্লু করা হয়েছে।


2. Bar Width Customization

JFreeChart এ Bar Chart এর বারগুলোর প্রস্থ কাস্টমাইজ করা সম্ভব। এটি BarRenderer এর setItemMargin() মেথডের মাধ্যমে করা যায়। এই মেথডটি বারগুলোর মধ্যে ব্যবধান এবং তাদের প্রস্থ কাস্টমাইজ করতে সহায়তা করে।

উদাহরণ:

নিচে একটি উদাহরণ দেওয়া হয়েছে যেখানে বারগুলোর প্রস্থ কাস্টমাইজ করা হয়েছে:

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.ui.ApplicationFrame;
import org.jfree.chart.ui.RefineryUtilities;

public class BarChartExample extends ApplicationFrame {

    public BarChartExample(String title) {
        super(title);
        JFreeChart chart = createChart(createDataset());
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
        setContentPane(chartPanel);
    }

    private DefaultCategoryDataset createDataset() {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(1.0, "Category 1", "Jan");
        dataset.addValue(4.0, "Category 1", "Feb");
        dataset.addValue(3.0, "Category 1", "Mar");
        return dataset;
    }

    private JFreeChart createChart(DefaultCategoryDataset dataset) {
        JFreeChart chart = ChartFactory.createBarChart(
            "Bar Chart Example",   // chart title
            "Month",               // x-axis label
            "Value",               // y-axis label
            dataset,               // dataset
            org.jfree.chart.plot.PlotOrientation.VERTICAL,  // plot orientation
            true,                  // include legend
            true                   // tooltips
        );
        
        // Customize the bar width
        CategoryPlot plot = chart.getCategoryPlot();
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        renderer.setItemMargin(0.2);  // Adjust the space between bars

        return chart;
    }

    public static void main(String[] args) {
        BarChartExample chart = new BarChartExample("Bar Chart Example");
        chart.pack();
        RefineryUtilities.centerFrameOnScreen(chart);
        chart.setVisible(true);
    }
}

এখানে, renderer.setItemMargin(0.2); ব্যবহার করে বারগুলোর মধ্যে ব্যবধান নির্ধারণ করা হয়েছে। এই মানের মাধ্যমে আপনি বারগুলোর প্রস্থ নিয়ন্ত্রণ করতে পারেন। আরও ছোট বা বড় বার তৈরি করতে হলে এই মানটি পরিবর্তন করতে হবে।


3. Bar Labels Customization

JFreeChart এ Bar Chart এর প্রতিটি বার (bar) এর ওপর লেবেল যুক্ত করা যায়, যা চার্টটিকে আরও বোধগম্য এবং ইন্টারঅ্যাক্টিভ করে তোলে। লেবেলগুলি বারগুলোর উপর বা পাশে দেখানো যায় এবং এটি 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.data.category.DefaultCategoryDataset;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.ui.ApplicationFrame;
import org.jfree.chart.ui.RefineryUtilities;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.PlotOrientation;

public class BarChartExample extends ApplicationFrame {

    public BarChartExample(String title) {
        super(title);
        JFreeChart chart = createChart(createDataset());
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
        setContentPane(chartPanel);
    }

    private DefaultCategoryDataset createDataset() {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(1.0, "Category 1", "Jan");
        dataset.addValue(4.0, "Category 1", "Feb");
        dataset.addValue(3.0, "Category 1", "Mar");
        return dataset;
    }

    private JFreeChart createChart(DefaultCategoryDataset dataset) {
        JFreeChart chart = ChartFactory.createBarChart(
            "Bar Chart Example",   // chart title
            "Month",               // x-axis label
            "Value",               // y-axis label
            dataset,               // dataset
            PlotOrientation.VERTICAL,  // plot orientation
            true,                  // include legend
            true                   // tooltips
        );
        
        // Customize bar labels
        CategoryPlot plot = chart.getCategoryPlot();
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
        renderer.setBaseItemLabelsVisible(true);

        return chart;
    }

    public static void main(String[] args) {
        BarChartExample chart = new BarChartExample("Bar Chart Example");
        chart.pack();
        RefineryUtilities.centerFrameOnScreen(chart);
        chart.setVisible(true);
    }
}

এখানে, renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); এবং renderer.setBaseItemLabelsVisible(true); ব্যবহার করে বারগুলির উপর লেবেলগুলো দেখানো হয়েছে। লেবেলগুলি স্বয়ংক্রিয়ভাবে বারগুলোর মান (যেমন ১, ৪, ৩) দেখাবে।


সারাংশ

JFreeChart ব্যবহার করে Bar Chart কাস্টমাইজেশন একটি শক্তিশালী ফিচার যা ডাটা ভিজ্যুয়ালাইজেশনকে আরও বোধগম্য এবং ইন্টারেক্টিভ করে তোলে। Bar Color, Bar Width, এবং Bar Labels কাস্টমাইজ করা সহজ এবং দ্রুত। আপনি চাইলে প্রতিটি বারকে আলাদা রঙ দিতে পারেন, বারগুলোর প্রস্থ পরিবর্তন করতে পারেন এবং প্রতিটি বারটির ওপর লেবেল যোগ করতে পারেন, যা ডাটার উপস্থাপনাকে আরও আকর্ষণীয় এবং ব্যবহারকারী বান্ধব করে তোলে।

Content added By

JFreeChart একটি জনপ্রিয় Java লাইব্রেরি যা ডাটা ভিজ্যুয়ালাইজেশন এবং চার্ট তৈরি করার জন্য ব্যবহৃত হয়। Bar Chart একটি সাধারণ কিন্তু শক্তিশালী চার্ট যা ডাটা কategori বা শ্রেণীভুক্তভাবে প্রদর্শন করে। JFreeChart দিয়ে আপনি Stacked Bar Chart এবং Grouped Bar Chart সহজেই তৈরি করতে পারেন। এই দুটি চার্ট আপনাকে তুলনামূলকভাবে ডাটা ভিজ্যুয়ালাইজেশন এবং বিশ্লেষণ করতে সহায়তা করে।

1. Stacked Bar Chart

Stacked Bar Chart একটি চার্ট যেখানে প্রতিটি বার (bar) বিভিন্ন সেগমেন্টে ভাগ করা হয়, এবং প্রতিটি সেগমেন্ট অন্য একটি মান (value) প্রতিনিধিত্ব করে। এটি বিশেষত তখন ব্যবহৃত হয় যখন আপনি একাধিক ক্যাটেগরি বা ভ্যালুর মধ্যে মোট অংশের অবদান প্রদর্শন করতে চান।

Stacked Bar Chart তৈরির জন্য প্রয়োজনীয় কোড:

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

public class StackedBarChartExample {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("Stacked Bar Chart Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(createChartPanel(createDataset()));
            frame.pack();
            frame.setVisible(true);
        });
    }

    private static CategoryDataset createDataset() {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        // Adding data to the dataset
        dataset.addValue(1, "Category 1", "Jan");
        dataset.addValue(2, "Category 2", "Jan");
        dataset.addValue(3, "Category 3", "Jan");

        dataset.addValue(4, "Category 1", "Feb");
        dataset.addValue(5, "Category 2", "Feb");
        dataset.addValue(6, "Category 3", "Feb");

        dataset.addValue(7, "Category 1", "Mar");
        dataset.addValue(8, "Category 2", "Mar");
        dataset.addValue(9, "Category 3", "Mar");

        return dataset;
    }

    private static ChartPanel createChartPanel(CategoryDataset dataset) {
        JFreeChart chart = ChartFactory.createStackedBarChart(
                "Stacked Bar Chart", // Title
                "Month", // X-Axis Label
                "Value", // Y-Axis Label
                dataset // Dataset
        );
        return new ChartPanel(chart);
    }
}

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

  • DefaultCategoryDataset: এই ক্লাস ব্যবহার করে আপনি ডাটা যোগ করতে পারেন। এখানে আমরা ৩টি ক্যাটেগরি (Category 1, 2, 3) এর জন্য বিভিন্ন মান (value) যোগ করছি।
  • createStackedBarChart(): এটি Stacked Bar Chart তৈরি করতে ব্যবহৃত JFreeChart এর একটি মেথড। এটি চিহ্নিত করে যে গ্রাফটি স্ট্যাকড বার চার্ট হবে।
  • ChartPanel: এটি একটি প্যানেল যা চার্ট প্রদর্শন করে।

এটি Stacked Bar Chart তৈরি করবে যেখানে প্রতিটি মাসের জন্য তিনটি ক্যাটেগরির মান স্ট্যাক করা হয়েছে।


2. Grouped Bar Chart

Grouped Bar Chart হল একটি চার্ট যেখানে প্রতিটি ক্যাটেগরি ভ্যালু আলাদা বার (bar) দিয়ে প্রদর্শিত হয়, এবং প্রতিটি গ্রুপের মধ্যে একাধিক বার থাকে। এটি তখন ব্যবহার করা হয় যখন একাধিক ভ্যারিয়েবলকে একই ক্যাটেগরিতে তুলনা করতে চান।

Grouped Bar Chart তৈরির জন্য প্রয়োজনীয় কোড:

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

public class GroupedBarChartExample {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("Grouped Bar Chart Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(createChartPanel(createDataset()));
            frame.pack();
            frame.setVisible(true);
        });
    }

    private static CategoryDataset createDataset() {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        // Adding data to the dataset
        dataset.addValue(1, "Category 1", "Jan");
        dataset.addValue(2, "Category 2", "Jan");
        dataset.addValue(3, "Category 3", "Jan");

        dataset.addValue(4, "Category 1", "Feb");
        dataset.addValue(5, "Category 2", "Feb");
        dataset.addValue(6, "Category 3", "Feb");

        dataset.addValue(7, "Category 1", "Mar");
        dataset.addValue(8, "Category 2", "Mar");
        dataset.addValue(9, "Category 3", "Mar");

        return dataset;
    }

    private static ChartPanel createChartPanel(CategoryDataset dataset) {
        JFreeChart chart = ChartFactory.createBarChart(
                "Grouped Bar Chart", // Title
                "Month", // X-Axis Label
                "Value", // Y-Axis Label
                dataset, // Dataset
                org.jfree.chart.plot.PlotOrientation.VERTICAL, 
                true, // Include legend
                true, // Tooltips
                false // URLs
        );
        return new ChartPanel(chart);
    }
}

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

  • createBarChart(): এই মেথডটি Grouped Bar Chart তৈরি করতে ব্যবহৃত হয়। এখানে Category 1, Category 2, এবং Category 3 একই মাসের মধ্যে গ্রুপ হিসেবে দেখা যাবে, তবে প্রতিটি গ্রুপের জন্য আলাদা আলাদা বার থাকবে।
  • Dataset: এখানে DefaultCategoryDataset ব্যবহার করে প্রতিটি মাসের জন্য আলাদা ক্যাটেগরি এবং মান (value) প্রদান করা হয়েছে।
  • ChartPanel: এটি JFreeChart তৈরি করার পর তা প্রদর্শন করতে ব্যবহৃত হয়।

এটি Grouped Bar Chart তৈরি করবে, যেখানে মাস ভিত্তিক একাধিক বার ক্যাটেগরি অনুযায়ী প্রদর্শিত হবে।


সারাংশ

Stacked Bar Chart এবং Grouped Bar Chart দুটি গুরুত্বপূর্ণ চার্ট টাইপ যা বিভিন্ন ধরনের ডাটা ভিজ্যুয়ালাইজেশনের জন্য ব্যবহৃত হয়। JFreeChart দিয়ে আপনি সহজে এই দুটি চার্ট তৈরি করতে পারেন এবং বিভিন্ন ক্যাটেগরি এবং মাস অনুযায়ী ডাটা তুলনা করতে সক্ষম হবেন।

  • Stacked Bar Chart আপনাকে একটি গ্রুপের মধ্যে প্রতিটি সেগমেন্টের অবদান প্রদর্শন করতে সাহায্য করে।
  • Grouped Bar Chart একই ক্যাটেগরির মধ্যে একাধিক ভ্যালু তুলনা করতে সহায়তা করে।

এই দুটি চার্ট তৈরি করে আপনি আপনার ডাটার গভীর বিশ্লেষণ এবং উপস্থাপনা করতে পারবেন, যা বিশেষত ব্যবসায়িক রিপোর্টিং, গবেষণা, এবং ডেটা বিশ্লেষণের জন্য অত্যন্ত কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...