JFreeChart লাইব্রেরি ব্যবহার করে Java অ্যাপ্লিকেশনে বিভিন্ন ধরনের চার্ট তৈরি করা যায়, তার মধ্যে একটি জনপ্রিয় চার্ট হলো Line Chart। লাইন চার্ট মূলত সময়ের সাথে ডেটার পরিবর্তন বা দুটি ভেরিয়েবলের মধ্যে সম্পর্ক দেখানোর জন্য ব্যবহৃত হয়। এটি সাধারণত বিভিন্ন প্রকার পরিসংখ্যানের সময়কালিক পরিবর্তন পর্যবেক্ষণ করতে ব্যবহার করা হয়, যেমন স্টক মার্কেটের শেয়ার মূল্য বা ওয়েবসাইটের ট্রাফিক বিশ্লেষণ।
এই গাইডে আমরা JFreeChart ব্যবহার করে একটি সহজ Line Chart তৈরি করার পদ্ধতি দেখব।
JFreeChart দিয়ে Line Chart তৈরি করার উদাহরণ
1. লাইব্রেরি কনফিগারেশন
প্রথমে, নিশ্চিত করুন যে আপনার প্রজেক্টে JFreeChart এবং JCommon লাইব্রেরি যুক্ত করা আছে। যদি আপনি 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. Line Chart তৈরি করার কোড উদাহরণ
এখন, আমরা JFreeChart ব্যবহার করে একটি সাধারণ Line Chart তৈরি করব যা কয়েকটি ডেটা পয়েন্টের মাধ্যমে লাইন প্রদর্শন করবে। এই কোডে JFreeChart লাইব্রেরি ব্যবহার করে আমরা Time Series ডেটা দিয়ে লাইন চার্ট তৈরি করব।
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.*;
public class LineChartExample {
public static void main(String[] args) {
// Time series dataset তৈরি করা
XYSeries series = new XYSeries("Stock Prices");
series.add(1, 200);
series.add(2, 210);
series.add(3, 220);
series.add(4, 240);
series.add(5, 250);
series.add(6, 230);
series.add(7, 220);
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
// লাইন চার্ট তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Stock Price Over Time", // Chart title
"Time", // X-Axis Label
"Price", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL,// Orientation
true, // Show legend
true, // Use tooltips
false // URLs
);
// ChartPanel তৈরি করা এবং JFrame এ যোগ করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame তৈরি করা এবং chartPanel যোগ করা
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
3. কোডের ব্যাখ্যা
- XYSeries:
- এখানে আমরা XYSeries ব্যবহার করেছি, যা সময়ের সাথে ডেটার পরিবর্তন বা দুটি ভেরিয়েবলের মধ্যে সম্পর্ক প্রদর্শন করতে সাহায্য করে। এই সিরিজে আমরা শেয়ার প্রাইজ (মূল্য) এবং সময় (ঘণ্টা) যুক্ত করেছি।
- Dataset তৈরি করা:
- XYSeriesCollection ব্যবহার করে আমরা XYSeries সিরিজটি একটি dataset-এ যোগ করেছি।
- Line Chart তৈরি করা:
ChartFactory.createXYLineChart()মেথড ব্যবহার করে আমরা একটি Line Chart তৈরি করেছি। এখানে টাইটেল, অক্ষের নাম, এবং ডেটাসেট প্যারামিটার হিসেবে পাস করা হয়েছে।
- ChartPanel:
- ChartPanel হল একটি JPanel যা চার্টকে প্রদর্শন করতে ব্যবহৃত হয়। এটি JFrame এ যোগ করা হয় যাতে চার্টটি GUI তে প্রদর্শিত হয়।
- JFrame:
- JFrame তৈরি করে সেখানে ChartPanel যোগ করা হয়েছে। এটি আমাদের চার্ট GUI তে প্রদর্শন করবে।
4. আউটপুট
এই কোডটি চালালে একটি Line Chart তৈরি হবে যা নিচের ডেটার ভিত্তিতে স্টক প্রাইস পরিবর্তনের সাথে সম্পর্কিত:
Time: 1, 2, 3, 4, 5, 6, 7Price: 200, 210, 220, 240, 250, 230, 220
চার্টটি গ্রাফ আকারে X-Axis (সময়ের জন্য) এবং Y-Axis (মূল্য জন্য) দেখাবে।
5. কাস্টমাইজেশন
JFreeChart ব্যবহার করে আপনি চার্টের বিভিন্ন উপাদান কাস্টমাইজ করতে পারেন:
- চার্টের রঙ পরিবর্তন:
- আপনি plot.setDomainGridlinePaint(Color.RED) দিয়ে গ্রিডলাইন রঙ পরিবর্তন করতে পারেন।
- লেবেল কাস্টমাইজেশন:
axis.setLabelFont(new Font("Serif", Font.BOLD, 14))ব্যবহার করে আপনি অক্ষের লেবেল কাস্টমাইজ করতে পারেন।
- চার্টের আকার:
chartPanel.setPreferredSize(new java.awt.Dimension(1000, 800))দিয়ে চার্টের আকার পরিবর্তন করতে পারেন।
সারাংশ
JFreeChart ব্যবহার করে আপনি সহজেই Line Chart তৈরি করতে পারেন। এটি ডেটার পরিবর্তন দেখানোর জন্য একটি শক্তিশালী টুল। জেফ্রিচার্টের মাধ্যমে আপনি বিভিন্ন ধরনের চার্ট যেমন লাইন, বার, পাই ইত্যাদি তৈরি করতে পারেন এবং ডেটার ভিজ্যুয়াল উপস্থাপন তৈরি করতে পারেন। এই গাইডে, আমরা একটি Stock Price লাইন চার্ট তৈরি করার মাধ্যমে দেখিয়েছি কিভাবে JFreeChart ব্যবহার করা যায়।
JFreeChart লাইব্রেরি ব্যবহার করে বিভিন্ন ধরনের চার্ট যেমন বার চার্ট, পাই চার্ট, লাইনে চার্ট ইত্যাদি তৈরি করা যায়। DefaultCategoryDataset ব্যবহার করে সহজেই Line Chart তৈরি করা সম্ভব। এটি ক্যাটাগরি ভিত্তিক ডেটা সংরক্ষণ এবং প্রদর্শন করতে ব্যবহৃত হয়, যেখানে X এবং Y অক্ষের মাধ্যমে ডেটা মাপা হয়। লাইনে চার্ট সাধারণত সময়ের সাথে ডেটার পরিবর্তন বা তুলনা প্রদর্শন করতে ব্যবহৃত হয়।
এই গাইডে, আমরা JFreeChart ব্যবহার করে Line Chart তৈরি করার প্রক্রিয়া দেখব, যেখানে DefaultCategoryDataset ব্যবহার করা হবে।
DefaultCategoryDataset এবং Line Chart
DefaultCategoryDataset হল একটি ক্লাস যা ক্যাটাগরি ভিত্তিক ডেটা সংরক্ষণ করে। এটি CategoryDataset ইন্টারফেসের একটি বাস্তবায়ন, যা X এবং Y অক্ষের মধ্যে ডেটা রাখে এবং সাধারণত বার চার্ট বা লাইনে চার্টে ব্যবহৃত হয়। লাইনে চার্টে X অক্ষ সাধারণত Time বা Category হয়ে থাকে এবং Y অক্ষটি কোনো পরিমাপ বা মান হয়ে থাকে।
Line Chart তৈরি করার উদাহরণ
1. জেফ্রিচার্ট লাইব্রেরি সেটআপ
প্রথমে, JFreeChart লাইব্রেরিটি আপনার প্রজেক্টে যোগ করতে হবে। আপনি যদি Maven ব্যবহার করেন, তাহলে pom.xml ফাইলে নিচের ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.3</version>
</dependency>
এছাড়া, আপনি JFreeChart এবং JCommon JAR ফাইল ডাউনলোড করে আপনার প্রজেক্টে যোগ করতে পারেন।
2. Line Chart তৈরি করার কোড উদাহরণ
এখানে একটি Line 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 LineChartExample {
public static void main(String[] args) {
// Dataset তৈরি
DefaultCategoryDataset dataset = createDataset();
// Line Chart তৈরি
JFreeChart chart = ChartFactory.createLineChart(
"Monthly Sales Data", // Chart Title
"Month", // X-Axis Label
"Sales", // Y-Axis Label
dataset, // Dataset
org.jfree.chart.plot.PlotOrientation.VERTICAL,
true, // Include legend
true, // Tooltips
false // URLs
);
// ChartPanel তৈরি এবং JFrame এ প্রদর্শন
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(chartPanel);
frame.pack();
frame.setVisible(true);
}
// Dataset তৈরি করার জন্য একটি মেথড
private static DefaultCategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// Dataset এ ডেটা যোগ করা
dataset.addValue(100, "Sales", "January");
dataset.addValue(200, "Sales", "February");
dataset.addValue(150, "Sales", "March");
dataset.addValue(250, "Sales", "April");
dataset.addValue(300, "Sales", "May");
dataset.addValue(350, "Sales", "June");
return dataset;
}
}
কোডের ব্যাখ্যা
Dataset তৈরি:
DefaultCategoryDatasetব্যবহার করে ডেটা তৈরি করা হয়েছে। এখানে, "Sales" নামে একটি সিরিজ এবং বিভিন্ন মাসের জন্য বিক্রয়ের মান যোগ করা হয়েছে।
dataset.addValue(100, "Sales", "January"); dataset.addValue(200, "Sales", "February"); dataset.addValue(150, "Sales", "March");Chart তৈরি:
ChartFactory.createLineChart()মেথড ব্যবহার করে লাইনে চার্ট তৈরি করা হয়েছে।- চার্টের টাইটেল, X এবং Y অক্ষের লেবেল, এবং Dataset প্যারামিটার হিসেবে দেওয়া হয়েছে।
JFreeChart chart = ChartFactory.createLineChart( "Monthly Sales Data", // Chart Title "Month", // X-Axis Label "Sales", // Y-Axis Label dataset, // Dataset org.jfree.chart.plot.PlotOrientation.VERTICAL, true, // Include legend true, // Tooltips false // URLs );ChartPanel এবং JFrame:
ChartPanelব্যবহার করে চার্টের UI প্যানেল তৈরি করা হয়েছে, যাতে এটি একটি JFrame উইন্ডোতে প্রদর্শিত হয়।
ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(800, 600)); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(chartPanel); frame.pack(); frame.setVisible(true);
3. Chart Customization
JFreeChart লাইব্রেরি অনেক কাস্টমাইজেশন অপশন অফার করে। আপনি চার্টের রঙ, স্টাইল, লেবেল, অক্ষের সীমা, এবং অন্যান্য ভিজ্যুয়াল বৈশিষ্ট্য পরিবর্তন করতে পারেন। নিচে কিছু কাস্টমাইজেশন দেখানো হয়েছে:
3.1 Chart Background Color পরিবর্তন:
আপনি চার্টের ব্যাকগ্রাউন্ড কালার পরিবর্তন করতে পারেন:
chart.setBackgroundPaint(java.awt.Color.lightGray);
3.2 Line Color পরিবর্তন:
লেখা বা লাইন কালার পরিবর্তন করতে:
chart.getPlot().setDomainGridlinePaint(java.awt.Color.BLUE);
chart.getPlot().setRangeGridlinePaint(java.awt.Color.BLUE);
3.3 Axis Labels পরিবর্তন:
X এবং Y অক্ষের লেবেল পরিবর্তন করতে:
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.getDomainAxis().setLabel("Month of the Year");
plot.getRangeAxis().setLabel("Sales Volume");
4. সারাংশ
JFreeChart এর মাধ্যমে Line Chart তৈরি করা খুবই সহজ এবং কাস্টমাইজযোগ্য। আপনি DefaultCategoryDataset ব্যবহার করে বিভিন্ন ধরনের ডেটা তৈরি করতে পারেন এবং সেটিকে গ্রাফে ভিজ্যুয়ালাইজ করতে পারেন। এখানে আমরা একটি সহজ Line Chart তৈরি করেছি যা মাস ভিত্তিক বিক্রয়ের তথ্য প্রদর্শন করে। JFreeChart লাইব্রেরি ব্যবহার করে আপনি বিভিন্ন ধরনের গ্রাফিক্যাল ডেটা ভিজ্যুয়ালাইজেশন করতে পারেন এবং তা কাস্টমাইজ করে আরও উন্নত রিপোর্ট তৈরি করতে পারেন।
JFreeChart লাইব্রেরি ব্যবহার করে আপনি Multiple Series সহ লাইন চার্ট তৈরি করতে পারেন, যেখানে একাধিক সিরিজ একই গ্রাফে প্রদর্শিত হবে। এটি সাধারণত একাধিক ডেটা পয়েন্টের মধ্যে সম্পর্ক বুঝতে সাহায্য করে এবং বিভিন্ন সিরিজের তুলনা করা সহজ হয়। যেমন, আপনি যদি একাধিক দেশের শেয়ার মার্কেটের তথ্য বা বিভিন্ন সময়ের জন্য বিক্রয় ডেটা প্রদর্শন করতে চান, তাহলে Multiple Series সহ লাইন চার্ট উপকারী হতে পারে।
এই গাইডে, আমরা দেখব কিভাবে Multiple Series সহ একটি লাইন চার্ট তৈরি করা যায়।
1. JFreeChart কনফিগারেশন
প্রথমে নিশ্চিত করুন যে আপনি JFreeChart এবং JCommon লাইব্রেরি আপনার প্রজেক্টে যোগ করেছেন। যদি আপনি 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 Series সহ Line Chart তৈরি করা
এখন, আমরা Multiple 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.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
public class MultipleLineChartExample {
public static void main(String[] args) {
// Sales data
XYSeries salesSeries = new XYSeries("Sales");
salesSeries.add(1, 250);
salesSeries.add(2, 300);
salesSeries.add(3, 400);
salesSeries.add(4, 500);
salesSeries.add(5, 600);
salesSeries.add(6, 700);
// Expenses data
XYSeries expensesSeries = new XYSeries("Expenses");
expensesSeries.add(1, 200);
expensesSeries.add(2, 250);
expensesSeries.add(3, 300);
expensesSeries.add(4, 350);
expensesSeries.add(5, 400);
expensesSeries.add(6, 450);
// Create dataset with multiple series
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(salesSeries);
dataset.addSeries(expensesSeries);
// Create line chart
JFreeChart chart = ChartFactory.createXYLineChart(
"Sales vs Expenses", // Chart title
"Month", // X-Axis Label
"Amount", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL, // Plot orientation
true, // Include legend
true, // Tooltips
false // URLs
);
// Customize chart panel
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// Create JFrame to display the chart
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
3. কোডের ব্যাখ্যা
- XYSeries:
- প্রথমে, আমরা দুটি XYSeries তৈরি করেছি: একটি Sales ডেটার জন্য এবং আরেকটি Expenses ডেটার জন্য। প্রতিটি সিরিজের জন্য আমরা ডেটা পয়েন্ট যোগ করেছি। উদাহরণস্বরূপ, salesSeries-এ 1 থেকে 6 পর্যন্ত বিভিন্ন মাসের বিক্রয়ের ডেটা পয়েন্ট রয়েছে, এবং expensesSeries-এ সেই মাসগুলোর খরচের ডেটা রয়েছে।
- XYSeriesCollection:
- এরপর আমরা XYSeriesCollection ব্যবহার করেছি, যা একটি ডেটাসেট তৈরি করে এবং তাতে salesSeries এবং expensesSeries যোগ করেছি।
- Line Chart Creation:
ChartFactory.createXYLineChart()মেথড ব্যবহার করে আমরা একটি লাইন চার্ট তৈরি করেছি, যেখানে X-Axis এ মাস (1, 2, 3, ...) এবং Y-Axis এ মূল্য (বিক্রয় এবং খরচ) দেখানো হয়েছে।
- ChartPanel:
- ChartPanel ব্যবহার করে আমরা চার্টটি JFrame-এ প্রদর্শন করেছি। এটি একটি প্যানেল যা চার্টের ভিজ্যুয়াল প্রেজেন্টেশন হ্যান্ডেল করে।
- 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লেবেল কাস্টমাইজেশন: X-Axis এবং Y-Axis লেবেল কাস্টমাইজ করা যায়।
plot.getDomainAxis().setLabelFont(new Font("Serif", Font.BOLD, 12)); // X-Axis Label Font plot.getRangeAxis().setLabelFont(new Font("Serif", Font.BOLD, 12)); // Y-Axis Label Fontচার্টের শিরোনাম পরিবর্তন: আপনি চার্টের শিরোনাম কাস্টমাইজ করতে পারেন।
chart.setTitle(new TextTitle("Sales vs Expenses Over Time", new Font("Serif", Font.BOLD, 18)));একাধিক Y-Axis: আপনি বিভিন্ন সিরিজের জন্য আলাদা Y-Axis ব্যবহার করতে পারেন।
plot.setRangeAxis(1, new NumberAxis("Expenses")); plot.setDataset(1, expensesDataset); plot.mapDatasetToRangeAxis(1, 1);
সারাংশ
JFreeChart ব্যবহার করে আপনি Multiple Series সহ Line Chart তৈরি করতে পারেন, যা একাধিক ডেটা সিরিজকে একটি একক গ্রাফে তুলনা করার জন্য সহায়ক। এটি ডেটার সম্পর্ক এবং পরিবর্তন বুঝতে সাহায্য করে। এই গাইডে, আমরা দুটি সিরিজের ডেটা (Sales এবং Expenses) সহ একটি লাইন চার্ট তৈরি করার পদ্ধতি দেখেছি এবং JFreeChart এর কাস্টমাইজেশন অপশনগুলোও আলোচনা করেছি। JFreeChart একটি শক্তিশালী এবং নমনীয় টুল যা Java প্রোগ্রামে ডেটা ভিজ্যুয়ালাইজেশনের জন্য ব্যবহার করা যেতে পারে।
JFreeChart একটি জনপ্রিয় Java লাইব্রেরি যা ডেটা ভিজ্যুয়ালাইজেশনের জন্য ব্যবহার করা হয়। Line Chart ব্যবহার করে আপনি ডেটার পরিবর্তন এবং প্রবণতা দেখতে পারেন। এই গাইডে আমরা জানব কিভাবে Line Chart তৈরি করা যায় এবং কিভাবে Data Points এবং Labels যোগ করা যায়।
1. Line Chart তৈরি করা
প্রথমে, আপনাকে একটি সাধারণ Line Chart তৈরি করতে হবে, এবং তারপর সেখানে Data Points এবং Labels যোগ করতে হবে।
উদাহরণ: Line 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 LineChartWithLabels {
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 Data Points and Labels", // 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("JFreeChart Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(createChartPanel());
frame.pack();
frame.setVisible(true);
}
}
এটি একটি সাধারণ Line Chart তৈরি করবে, যেখানে এক্স-অক্ষের (X-Axis) উপর মাস এবং ওয়াই-অক্ষের (Y-Axis) উপর মান থাকবে।
2. Data Points এবং Labels যোগ করা
Data Points যোগ করতে, আপনাকে DefaultCategoryDataset-এ মানগুলি সন্নিবেশ করতে হবে, যা আমরা উপরে করেছি। কিন্তু, আমরা যদি Data Labels এবং Data Points সঠিকভাবে দেখতে চাই, তাহলে XYItemRenderer ব্যবহার করতে হবে।
Data Labels এবং Data Points কাস্টমাইজ করার জন্য:
- XYPlot এর মধ্যে XYItemRenderer ব্যবহার করা।
- CategoryItemRenderer এবং XYPlot-এর মাধ্যমে Data Labels যোগ করা।
উদাহরণ: Data Points এবং Labels যোগ করা
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.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class LineChartWithLabelsAndPoints {
public static JPanel createChartPanel() {
// ডেটাসেট তৈরি করা
XYSeries series = new XYSeries("Series1");
series.add(1, 1.0);
series.add(2, 4.0);
series.add(3, 3.0);
series.add(4, 5.0);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// Line Chart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Line Chart with Data Points and Labels", // Chart Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset // Dataset
);
// XYPlot কাস্টমাইজ করা
XYPlot plot = chart.getXYPlot();
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
// Data Points এবং Line এর জন্য Renderer কাস্টমাইজ করা
renderer.setSeriesLinesVisible(0, true); // Line visibility
renderer.setSeriesShapesVisible(0, true); // Data point visibility
renderer.setSeriesShape(0, new java.awt.geom.Ellipse2D.Double(-3, -3, 6, 6)); // Shape for points
plot.setRenderer(renderer);
// Data Labels যোগ করা
chart.getXYPlot().setDomainPannable(true);
chart.getXYPlot().setRangePannable(true);
// Chart Panel তৈরি করে এবং রিটার্ন করা
return new ChartPanel(chart);
}
public static void main(String[] args) {
// JFrame তৈরি করা
JFrame frame = new JFrame("JFreeChart Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(createChartPanel());
frame.pack();
frame.setVisible(true);
}
}
এই কোডে, XYSeries ব্যবহার করে ডেটা পয়েন্ট যোগ করা হয়েছে এবং XYLineAndShapeRenderer ব্যবহার করে ডেটা পয়েন্টের শেপ এবং লাইন কাস্টমাইজ করা হয়েছে। এখানে ডেটা পয়েন্টের শেপ Ellipse2D (ডট) আকারে নির্ধারণ করা হয়েছে এবং Renderer দিয়ে তাদের দৃশ্যমান করা হয়েছে।
3. Data Labels কাস্টমাইজ করা
ডেটা লেবেলগুলো প্রদর্শন করার জন্য, XYItemLabelGenerator ব্যবহার করা হয়। এটি আপনাকে ডেটা পয়েন্টের উপরে লেবেল যোগ করতে সাহায্য করে।
উদাহরণ: Data Labels কাস্টমাইজ করা
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.XYLineAndShapeRenderer;
import org.jfree.chart.labels.XYItemLabelGenerator;
import org.jfree.chart.labels.StandardXYItemLabelGenerator;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class LineChartWithCustomLabels {
public static JPanel createChartPanel() {
// ডেটাসেট তৈরি করা
XYSeries series = new XYSeries("Series1");
series.add(1, 1.0);
series.add(2, 4.0);
series.add(3, 3.0);
series.add(4, 5.0);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// Line Chart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Line Chart with Data Labels", // Chart Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset // Dataset
);
// XYPlot কাস্টমাইজ করা
XYPlot plot = chart.getXYPlot();
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
// Data Points এবং Line কাস্টমাইজ করা
renderer.setSeriesLinesVisible(0, true);
renderer.setSeriesShapesVisible(0, true);
renderer.setSeriesShape(0, new java.awt.geom.Ellipse2D.Double(-3, -3, 6, 6));
plot.setRenderer(renderer);
// Data Labels যোগ করা
XYItemLabelGenerator generator = new StandardXYItemLabelGenerator();
renderer.setSeriesItemLabelGenerator(0, generator);
renderer.setSeriesItemLabelsVisible(0, true);
// Chart Panel তৈরি করে এবং রিটার্ন করা
return new ChartPanel(chart);
}
public static void main(String[] args) {
// JFrame তৈরি করা
JFrame frame = new JFrame("JFreeChart Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(createChartPanel());
frame.pack();
frame.setVisible(true);
}
}
এই কোডে, StandardXYItemLabelGenerator ব্যবহার করা হয়েছে ডেটা পয়েন্টের উপর লেবেল যোগ করতে। এটি ডেটা পয়েন্টের মান টেক্সট আকারে প্রদর্শন করবে।
সারাংশ
JFreeChart ব্যবহার করে আপনি সহজেই Line Chart তৈরি করতে পারেন এবং সেই চার্টে Data Points ও Labels যোগ করতে পারেন। XYSeries, XYPlot, এবং XYLineAndShapeRenderer ব্যবহার করে আপনি আপনার চার্টের ডেটা পয়েন্ট এবং লাইন কাস্টমাইজ করতে পারবেন। এছাড়া, XYItemLabelGenerator ব্যবহার করে আপনি ডেটা পয়েন্টে কাস্টম লেবেল প্রদর্শন করতে পারবেন। JFreeChart এর এই ক্ষমতা আপনাকে আরও উন্নত এবং বিস্তারিত ডেটা ভিজ্যুয়ালাইজেশন তৈরি করতে সহায়তা করে।
JFreeChart একটি শক্তিশালী Java লাইব্রেরি যা ডেটা ভিজ্যুয়ালাইজেশনের জন্য ব্যবহৃত হয়। আপনি JFreeChart ব্যবহার করে বিভিন্ন ধরনের চার্ট যেমন Line Chart, Bar Chart, এবং Pie Chart তৈরি করতে পারেন। মাঝে মাঝে, চার্টের উপস্থাপনাকে আরও আকর্ষণীয় এবং স্পষ্ট করতে Line Thickness (লাইন পুরুত্ব) এবং Line Color (লাইন রঙ) কাস্টমাইজ করতে হয়। এই গাইডে আমরা দেখবো কিভাবে JFreeChart-এ Line Thickness এবং Line Color কাস্টমাইজ করা যায়।
1. Line Thickness কাস্টমাইজ করা
Line Thickness বা লাইন পুরুত্ব কাস্টমাইজ করা সহজ, এবং এটি Plot এর মধ্যে লাইন গুলোর দৃশ্যমানতা পরিবর্তন করে।
Line Thickness কাস্টমাইজ করার জন্য setStroke() মেথড ব্যবহার করা হয়। এটি Plot বা 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.plot.Plot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.stroke.BasicStroke;
import javax.swing.*;
public class LineChartExample {
public static JPanel createChartPanel() {
// ডেটাসেট তৈরি করা
XYSeries series = new XYSeries("Line Chart");
series.add(1, 1);
series.add(2, 4);
series.add(3, 3);
series.add(4, 5);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// Line Chart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Line Chart with Custom Line Thickness", // 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 ব্যবহার করে Line Thickness কাস্টমাইজ করা
XYPlot plot = (XYPlot) chart.getPlot();
plot.getRenderer().setSeriesStroke(0, new BasicStroke(3.0f)); // Line thickness set to 3.0f
// Chart Panel তৈরি করে এবং রিটার্ন করা
return new ChartPanel(chart);
}
public static void main(String[] args) {
// JFrame তৈরি করা
JFrame frame = new JFrame("Line Chart Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(createChartPanel());
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- BasicStroke ক্লাস ব্যবহার করা হয়েছে লাইন স্ট্রোক কাস্টমাইজ করতে। এখানে,
new BasicStroke(3.0f)ব্যবহার করে লাইনটির পুরুত্ব ৩ পিক্সেল করা হয়েছে। আপনি এটিকে পরিবর্তন করে আরো পাতলা বা পুরু লাইন তৈরি করতে পারেন।
2. Line Color কাস্টমাইজ করা
Line Color কাস্টমাইজ করতে হলে, আপনি XYPlot এর setSeriesPaint() মেথড ব্যবহার করতে পারেন। এটি প্রতিটি সিরিজের লাইন রঙ নির্ধারণ করতে সাহায্য করে।
উদাহরণ:
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.plot.Plot;
import org.jfree.chart.ui.RefineryUtilities;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.plot.XYPlot;
import java.awt.Color;
import javax.swing.*;
public class LineChartWithColorExample {
public static JPanel createChartPanel() {
// ডেটাসেট তৈরি করা
XYSeries series = new XYSeries("Line Chart");
series.add(1, 1);
series.add(2, 4);
series.add(3, 3);
series.add(4, 5);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// Line Chart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Line Chart with Custom Line Color", // 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 ব্যবহার করে Line Color কাস্টমাইজ করা
XYPlot plot = (XYPlot) chart.getPlot();
plot.getRenderer().setSeriesPaint(0, Color.RED); // Line color set to RED
// Chart Panel তৈরি করে এবং রিটার্ন করা
return new ChartPanel(chart);
}
public static void main(String[] args) {
// JFrame তৈরি করা
JFrame frame = new JFrame("Line Chart with Color Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(createChartPanel());
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
plot.getRenderer().setSeriesPaint(0, Color.RED);এর মাধ্যমে প্রথম সিরিজের লাইন রঙ Red সেট করা হয়েছে।- আপনি অন্য রঙও ব্যবহার করতে পারেন, যেমন
Color.BLUE,Color.GREEN,Color.BLACK, ইত্যাদি।
3. Line Thickness এবং Color কাস্টমাইজ করা একসাথে
আপনি Line Thickness এবং Line Color একসাথে কাস্টমাইজ করতে পারেন। নিচের উদাহরণে দুইটি কাস্টমাইজেশন একত্রে দেখানো হয়েছে।
উদাহরণ:
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 org.jfree.chart.plot.XYPlot;
import java.awt.Color;
import java.awt.BasicStroke;
import javax.swing.*;
public class LineChartWithThicknessAndColor {
public static JPanel createChartPanel() {
// ডেটাসেট তৈরি করা
XYSeries series = new XYSeries("Line Chart");
series.add(1, 1);
series.add(2, 4);
series.add(3, 3);
series.add(4, 5);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// Line Chart তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Line Chart with Custom Thickness and Color", // 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 ব্যবহার করে Line Thickness এবং Color কাস্টমাইজ করা
XYPlot plot = (XYPlot) chart.getPlot();
plot.getRenderer().setSeriesStroke(0, new BasicStroke(3.0f)); // Line thickness set to 3.0f
plot.getRenderer().setSeriesPaint(0, Color.BLUE); // Line color set to BLUE
// Chart Panel তৈরি করে এবং রিটার্ন করা
return new ChartPanel(chart);
}
public static void main(String[] args) {
// JFrame তৈরি করা
JFrame frame = new JFrame("Line Chart with Thickness and Color");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(createChartPanel());
frame.pack();
frame.setVisible(true);
}
}
ব্যাখ্যা:
- BasicStroke(3.0f) ব্যবহার করে লাইনটির পুরুত্ব ৩ পিক্সেল করা হয়েছে।
- plot.getRenderer().setSeriesPaint(0, Color.BLUE); ব্যবহার করে লাইনটির রঙ ব্লু (Blue) করা হয়েছে।
সারাংশ
JFreeChart ব্যবহার করে Line Thickness এবং Line Color কাস্টমাইজ করা খুবই সহজ। আপনি BasicStroke ক্লাস ব্যবহার করে লাইনটির পুরুত্ব কাস্টমাইজ করতে পারেন এবং setSeriesPaint() মেথডের মাধ্যমে লাইনটির রঙ পরিবর্তন করতে পারেন। এই কাস্টমাইজেশন আপনার চার্টকে আরও আকর্ষণীয় এবং তথ্যপূর্ণ করে তোলে, যা ডেটা ভিজ্যুয়ালাইজেশনে খুবই গুরুত্বপূর্ণ।
Read more