JFreeChart লাইব্রেরি ব্যবহার করে আপনি একাধিক Time Series যুক্ত করে একটি লাইন চার্ট তৈরি করতে পারেন। টাইম সিরিজ (Time Series) সাধারণত ডেটার সময়কালিক পরিবর্তন বা প্রবণতা দেখানোর জন্য ব্যবহৃত হয়। একাধিক টাইম সিরিজ ব্যবহার করার মাধ্যমে আপনি বিভিন্ন টাইম সিরিজের মধ্যে তুলনা করতে পারেন। যেমন, আপনি বিভিন্ন দেশের বা বিভিন্ন পণ্যের বিক্রয়ের প্রবণতা তুলনা করতে পারেন।
এই গাইডে, আমরা দেখব কিভাবে Multiple Time Series সহ একটি লাইন চার্ট তৈরি করা যায়।
1. টাইম সিরিজ এবং JFreeChart কনফিগারেশন
প্রথমে, নিশ্চিত করুন যে আপনার প্রজেক্টে JFreeChart লাইব্রেরি সংযুক্ত আছে। আপনি যদি Maven ব্যবহার করেন, তাহলে pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করতে পারেন:
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.3</version>
</dependency>
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jcommon</artifactId>
<version>1.0.24</version>
</dependency>
এছাড়া, আপনি JAR ফাইল ডাউনলোড করে আপনার প্রজেক্টে যোগ করতে পারেন।
2. Multiple Time Series সহ Line Chart তৈরি করা
এখন, আমরা Multiple Time Series সহ একটি লাইন চার্ট তৈরি করব। এতে আমরা দুইটি টাইম সিরিজ (যেমন, Sales এবং Expenses) যোগ করব এবং তাদের সময়কালিক প্রবণতা তুলনা করব।
কোড উদাহরণ:
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.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class MultipleTimeSeriesChart {
public static JPanel createChartPanel() {
// Sales Time Series তৈরি করা
TimeSeries salesSeries = new TimeSeries("Sales");
salesSeries.add(new Second(10, 5, 8, 3, 2022), 1000);
salesSeries.add(new Second(15, 5, 8, 3, 2022), 1200);
salesSeries.add(new Second(20, 5, 8, 3, 2022), 1500);
salesSeries.add(new Second(25, 5, 8, 3, 2022), 1700);
salesSeries.add(new Second(30, 5, 8, 3, 2022), 1900);
// Expenses Time Series তৈরি করা
TimeSeries expensesSeries = new TimeSeries("Expenses");
expensesSeries.add(new Second(10, 5, 8, 3, 2022), 500);
expensesSeries.add(new Second(15, 5, 8, 3, 2022), 600);
expensesSeries.add(new Second(20, 5, 8, 3, 2022), 700);
expensesSeries.add(new Second(25, 5, 8, 3, 2022), 800);
expensesSeries.add(new Second(30, 5, 8, 3, 2022), 900);
// Dataset তৈরি করা
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(salesSeries);
dataset.addSeries(expensesSeries);
// Line Chart তৈরি করা
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"Sales and Expenses Over Time", // Chart Title
"Time", // X-Axis Label
"Amount", // Y-Axis Label
dataset, // Dataset
true, // Include legend
true, // Tooltips
false // URLs
);
// Chart Panel তৈরি এবং কাস্টমাইজ করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
chartPanel.setMouseWheelEnabled(true);
return chartPanel;
}
public static void main(String[] args) {
// JFrame তৈরি করা
JFrame frame = new JFrame("JFreeChart Multiple Time Series Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(createChartPanel());
frame.pack();
frame.setVisible(true);
}
}
3. কোডের ব্যাখ্যা
- TimeSeries:
- TimeSeries হল JFreeChart এর একটি ক্লাস যা টাইম সিরিজ ডেটা ধারণ করে। এখানে, আমরা দুটি সিরিজ তৈরি করেছি:
- Sales: বিক্রয় ডেটা (যেমন, ১০:১৫:০০, ১০:২০:০০)।
- Expenses: খরচ ডেটা (যেমন, ১০:১৫:০০, ১০:২০:০০)।
- TimeSeries হল JFreeChart এর একটি ক্লাস যা টাইম সিরিজ ডেটা ধারণ করে। এখানে, আমরা দুটি সিরিজ তৈরি করেছি:
- Second:
- Second ক্লাসটি JFreeChart এর টাইম সিরিজ ডেটার জন্য ব্যবহৃত হয়, যেখানে প্রতিটি ডেটা পয়েন্টের সাথে একটি নির্দিষ্ট সময় যুক্ত থাকে।
- TimeSeriesCollection:
- এই ডেটাসেট ব্যবহার করে আমরা একাধিক টাইম সিরিজ যোগ করতে পারি। এখানে, দুটি টাইম সিরিজ (Sales এবং Expenses) TimeSeriesCollection এ যুক্ত করা হয়েছে।
- ChartFactory.createTimeSeriesChart():
createTimeSeriesChart()মেথডের মাধ্যমে টাইম সিরিজের জন্য একটি লাইন চার্ট তৈরি করা হয়েছে। এতে টাইম সিরিজ ডেটা, চার্টের শিরোনাম, অক্ষের নাম এবং অন্যান্য কনফিগারেশন প্যারামিটার দেওয়া হয়েছে।
- ChartPanel:
- ChartPanel ব্যবহার করে আমরা JFreeChart টুলটিকে GUI তে প্রদর্শন করেছি।
- JFrame:
- JFrame তৈরি করা হয়েছে এবং এতে ChartPanel যোগ করা হয়েছে যাতে চার্টটি GUI তে প্রদর্শিত হয়।
4. আউটপুট
এই কোডটি চালালে একটি Line Chart প্রদর্শিত হবে যেখানে দুটি টাইম সিরিজ থাকবে:
- Sales (বিক্রয়) এবং Expenses (খরচ)
- X-Axis এ সময় এবং Y-Axis এ পরিমাণ থাকবে (যেমন বিক্রয়ের এবং খরচের পরিমাণ)।
- সময়কালিকভাবে ডেটার পরিবর্তন প্রদর্শিত হবে।
5. কাস্টমাইজেশন
JFreeChart-এ বিভিন্ন কাস্টমাইজেশন করা যায়, যেমন:
রঙ পরিবর্তন: সিরিজের রঙ পরিবর্তন করতে:
plot.getRenderer().setSeriesPaint(0, Color.BLUE); // Sales Series Color plot.getRenderer().setSeriesPaint(1, Color.RED); // Expenses Series Colorলোডিং শেপ পরিবর্তন: ডেটা পয়েন্টের শেপ পরিবর্তন করতে:
renderer.setSeriesShape(0, new Ellipse2D.Double(-3, -3, 6, 6)); // Circle shapeAxis এবং লেবেল কাস্টমাইজেশন:
plot.getDomainAxis().setLabelFont(new Font("Arial", Font.BOLD, 12)); // X-Axis Label Font plot.getRangeAxis().setLabelFont(new Font("Arial", Font.BOLD, 12)); // Y-Axis Label FontMultiple Y-Axis ব্যবহার: আপনি যদি দুইটি আলাদা Y-Axis ব্যবহার করতে চান:
plot.setRangeAxis(1, new NumberAxis("Expenses")); plot.setDataset(1, expensesDataset); plot.mapDatasetToRangeAxis(1, 1);
সারাংশ
JFreeChart দিয়ে আপনি সহজেই Multiple Time Series সহ Line Chart তৈরি করতে পারেন। এটি সময়ের সাথে ডেটার প্রবণতা এবং বিভিন্ন টাইম সিরিজের মধ্যে সম্পর্ক তুলনা করতে সহায়ক। এখানে, আমরা Sales এবং Expenses টাইম সিরিজ দিয়ে একটি লাইন চার্ট তৈরি করেছি এবং এর কাস্টমাইজেশন অপশন দেখিয়েছি। JFreeChart এর মাধ্যমে বিভিন্ন টাইম সিরিজ এবং ডেটা ভিজ্যুয়ালাইজেশন খুব সহজেই করা সম্ভব।
Read more