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 কাস্টমাইজ করা সহজ এবং দ্রুত। আপনি চাইলে প্রতিটি বারকে আলাদা রঙ দিতে পারেন, বারগুলোর প্রস্থ পরিবর্তন করতে পারেন এবং প্রতিটি বারটির ওপর লেবেল যোগ করতে পারেন, যা ডাটার উপস্থাপনাকে আরও আকর্ষণীয় এবং ব্যবহারকারী বান্ধব করে তোলে।
Read more