Plot হলো JFreeChart এর মূল অংশ যেখানে চার্টের গ্রাফিক্যাল উপস্থাপনা ঘটে। Plot Customization ব্যবহার করে আপনি চার্টের বিভিন্ন উপাদান যেমন গ্রিডলাইন, অক্ষের রঙ, লেবেল, ব্যাকগ্রাউন্ড, এবং ডেটা রেন্ডারিং স্টাইল কাস্টমাইজ করতে পারেন। এটি আপনার চার্টের দৃশ্যমানতা এবং তথ্য উপস্থাপনার গুণমান উন্নত করতে সাহায্য করে।
এখানে আমরা JFreeChart-এ Plot Customization এর বিভিন্ন দিক নিয়ে আলোচনা করব এবং উদাহরণ দেখব কিভাবে আপনি এটি ব্যবহার করতে পারেন।
১. Plot এর রঙ এবং ব্যাকগ্রাউন্ড পরিবর্তন করা
চার্টের Plot এর ব্যাকগ্রাউন্ড এবং রঙ পরিবর্তন করতে setBackgroundPaint() মেথড ব্যবহার করা হয়।
উদাহরণ: Plot এর ব্যাকগ্রাউন্ড এবং রঙ পরিবর্তন করা
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 javax.swing.*;
import java.awt.*;
public class PlotCustomizationExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(5, "Sales", "Jan");
dataset.addValue(10, "Sales", "Feb");
dataset.addValue(15, "Sales", "Mar");
// Bar Chart তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Sales Over Time", // টাইটেল
"Month", // X-Axis লেবেল
"Sales", // Y-Axis লেবেল
dataset, // ডেটাসেট
org.jfree.chart.plot.PlotOrientation.VERTICAL,
true, // লেজেন্ড
true, // টুলটিপস
false // URL
);
// Plot পান এবং ব্যাকগ্রাউন্ড পরিবর্তন করুন
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.LIGHT_GRAY); // প্লট ব্যাকগ্রাউন্ড রঙ পরিবর্তন করা
plot.setDomainGridlinePaint(Color.BLUE); // এক্স-অক্ষের গ্রিডলাইন রঙ
plot.setRangeGridlinePaint(Color.GREEN); // ওয়াই-অক্ষের গ্রিডলাইন রঙ
// চার্ট প্যানেল তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট প্রদর্শন
JFrame frame = new JFrame("Customized Plot Example");
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এখানে:
- setBackgroundPaint() ব্যবহার করে প্লটের ব্যাকগ্রাউন্ড রঙ পরিবর্তন করা হয়েছে।
- setDomainGridlinePaint() এবং setRangeGridlinePaint() ব্যবহার করে গ্রিডলাইনের রঙ পরিবর্তন করা হয়েছে।
২. Gridlines কাস্টমাইজেশন
আপনি Gridlines এর অবস্থান এবং রঙ কাস্টমাইজ করতে পারেন। এটি বিশেষ করে চার্টের তুলনামূলক ডেটা বিশ্লেষণে সাহায্য করে।
উদাহরণ: Gridlines কাস্টমাইজেশন
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 javax.swing.*;
import java.awt.*;
public class GridlinesCustomizationExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Sales", "Jan");
dataset.addValue(20, "Sales", "Feb");
dataset.addValue(30, "Sales", "Mar");
// Bar Chart তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Monthly Sales", // টাইটেল
"Month", // X-Axis লেবেল
"Sales", // Y-Axis লেবেল
dataset, // ডেটাসেট
org.jfree.chart.plot.PlotOrientation.VERTICAL,
true, // লেজেন্ড
true, // টুলটিপস
false // URL
);
// Plot পান এবং গ্রিডলাইন কাস্টমাইজেশন করুন
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setDomainGridlinePaint(Color.RED); // এক্স-অক্ষের গ্রিডলাইন রঙ
plot.setRangeGridlinePaint(Color.BLACK); // ওয়াই-অক্ষের গ্রিডলাইন রঙ
// চার্ট প্যানেল তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট প্রদর্শন
JFrame frame = new JFrame("Gridlines Customization");
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এখানে, setDomainGridlinePaint() এবং setRangeGridlinePaint() ব্যবহার করে গ্রিডলাইনের রঙ কাস্টমাইজ করা হয়েছে।
৩. Tick Marks এবং Tick Labels কাস্টমাইজেশন
Tick Marks এবং Tick Labels হল গ্রিডলাইনের দিকনির্দেশক যা চার্টের অক্ষ বরাবর ডেটা উপস্থাপন করে। আপনি এগুলোর রঙ, ফন্ট এবং স্টাইল কাস্টমাইজ করতে পারেন।
উদাহরণ: Tick Marks এবং Tick Labels কাস্টমাইজেশন
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.axis.CategoryAxis;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
public class TickCustomizationExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Sales", "Jan");
dataset.addValue(20, "Sales", "Feb");
dataset.addValue(30, "Sales", "Mar");
// Bar Chart তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Sales for the Quarter", // টাইটেল
"Month", // X-Axis লেবেল
"Sales", // Y-Axis লেবেল
dataset, // ডেটাসেট
org.jfree.chart.plot.PlotOrientation.VERTICAL,
true, // লেজেন্ড
true, // টুলটিপস
false // URL
);
// Plot পান এবং Tick Mark কাস্টমাইজেশন করুন
CategoryPlot plot = (CategoryPlot) chart.getPlot();
CategoryAxis xAxis = plot.getDomainAxis();
xAxis.setTickLabelFont(new Font("Arial", Font.BOLD, 12)); // টিক লেবেলের ফন্ট পরিবর্তন
xAxis.setTickLabelPaint(Color.MAGENTA); // টিক লেবেলের রঙ
// চার্ট প্যানেল তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট প্রদর্শন
JFrame frame = new JFrame("Tick Customization Example");
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এখানে:
- setTickLabelFont() ব্যবহার করে টিক লেবেলের ফন্ট পরিবর্তন করা হয়েছে।
- setTickLabelPaint() ব্যবহার করে টিক লেবেলের রঙ পরিবর্তন করা হয়েছে।
৪. Legend Customization
Legend বা চার্টের লেজেন্ড হলো সেই অংশ যা চার্টের বিভিন্ন সিরিজ বা ডেটা সিরিজের ব্যাখ্যা প্রদান করে। আপনি লেজেন্ডের অবস্থান, ফন্ট এবং রঙ কাস্টমাইজ করতে পারেন।
উদাহরণ: Legend কাস্টমাইজেশন
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.chart.LegendTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
public class LegendCustomizationExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Sales", "Jan");
dataset.addValue(20, "Sales", "Feb");
dataset.addValue(30, "Sales", "Mar");
// Bar Chart তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Quarterly Sales", // টাইটেল
"Month", // X-Axis লেবেল
"Sales", // Y-Axis লেবেল
dataset, // ডেটাসেট
PlotOrientation.VERTICAL,
true, // লেজেন্ড
true, // টুলটিপস
false // URL
);
// লেজেন্ড কাস্টমাইজেশন
LegendTitle legend = chart.getLegend();
legend.setItemFont(new Font("Arial", Font.BOLD, 12)); // লেজেন্ডের ফন্ট পরিবর্তন
legend.setPosition(RectangleEdge.BOTTOM); // লেজেন্ডের অবস্থান নিচে
// চার্ট প্যানেল তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট প্রদর্শন
JFrame frame = new JFrame("Legend Customization");
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এখানে:
- setItemFont() ব্যবহার করে লেজেন্ডের ফন্ট কাস্টমাইজ করা হয়েছে।
- setPosition() ব্যবহার করে লেজেন্ডের অবস্থান পরিবর্তন করা হয়েছে।
উপসংহার
JFreeChart-এ Plot Customization আপনাকে চার্টের ভিজ্যুয়াল উপস্থাপনাকে সম্পূর্ণ কাস্টমাইজ করতে সহায়তা করে। আপনি চার্টের ব্যাকগ্রাউন্ড, গ্রিডলাইন, টিক মার্ক, লেজেন্ড, এবং টাইটেল কাস্টমাইজ করতে পারেন। এর মাধ্যমে আপনি চার্টের ডিজাইন এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারবেন, এবং তথ্য উপস্থাপনা আরও আকর্ষণীয় ও কার্যকরী হবে।
JFreeChart লাইব্রেরিতে Plot Interface হলো চার্টের গ্রাফিক্যাল উপস্থাপনার মূল অংশ। Plot Interface এর মাধ্যমে আমরা চার্টের ভিজ্যুয়াল উপস্থাপন, অক্ষের কাস্টমাইজেশন, রঙ পরিবর্তন, গ্রিড লাইন ইত্যাদি নিয়ন্ত্রণ করতে পারি। এটি বিশেষভাবে Bar Chart, Line Chart, Pie Chart এবং অন্যান্য বিভিন্ন ধরণের চার্টে বিভিন্ন কাস্টমাইজেশন করার জন্য ব্যবহৃত হয়।
Plot Interface এর ধারণা
Plot হলো চার্টের একটি গুরুত্বপূর্ণ অংশ যা ডেটা পয়েন্টগুলোর চিত্রায়ন করে এবং গ্রাফিক্যাল রিপ্রেজেন্টেশন তৈরি করে। Plot Interface ব্যবহৃত হয়ে থাকে চার্টের শৈলী এবং উপস্থাপনা কাস্টমাইজ করার জন্য। JFreeChart বিভিন্ন ধরনের প্লট প্রদান করে, যেমন:
- CategoryPlot: Bar Chart এবং Line Chart জন্য ব্যবহৃত।
- XYPlot: XY Chart এবং Scatter Plot জন্য ব্যবহৃত।
- PiePlot: Pie Chart জন্য ব্যবহৃত।
- RingPlot: Doughnut Chart জন্য ব্যবহৃত।
Plot Interface এর মাধ্যমে কাস্টমাইজেশন
Plot Interface ব্যবহারের মাধ্যমে JFreeChart এর বিভিন্ন অংশ কাস্টমাইজ করা সম্ভব। নিচে কিছু সাধারণ কাস্টমাইজেশন দেখানো হলো:
1. CategoryPlot কাস্টমাইজেশন
CategoryPlot হলো CategoryDataset এর জন্য একটি প্লট যা Bar Chart বা Line Chart তৈরি করার জন্য ব্যবহৃত হয়। নিচে একটি উদাহরণ দেওয়া হল যেখানে CategoryPlot এর মাধ্যমে কিছু কাস্টমাইজেশন করা হয়েছে।
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.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class CustomBarChart extends ApplicationFrame {
public CustomBarChart(String title) {
super(title);
JFreeChart chart = createChart(createDataset());
ChartPanel panel = new ChartPanel(chart);
panel.setPreferredSize(new java.awt.Dimension(800, 600));
setContentPane(panel);
}
private static DefaultCategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(1.0, "Series1", "A");
dataset.addValue(4.0, "Series1", "B");
dataset.addValue(3.0, "Series1", "C");
dataset.addValue(5.0, "Series1", "D");
return dataset;
}
private static JFreeChart createChart(DefaultCategoryDataset dataset) {
JFreeChart chart = ChartFactory.createBarChart(
"Bar Chart Example", // Title
"Category", // X-Axis Label
"Value", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL, // Orientation
true, // Show Legend
true, // Tooltips
false // URLs
);
// CategoryPlot কাস্টমাইজেশন
CategoryPlot plot = chart.getCategoryPlot();
plot.setDomainGridlinesVisible(true); // X-Axis grid lines প্রদর্শন
plot.setRangeGridlinesVisible(true); // Y-Axis grid lines প্রদর্শন
plot.setDomainGridlinePaint(java.awt.Color.RED); // X-Axis grid line রঙ পরিবর্তন
plot.setRangeGridlinePaint(java.awt.Color.BLUE); // Y-Axis grid line রঙ পরিবর্তন
return chart;
}
public static void main(String[] args) {
CustomBarChart chart = new CustomBarChart("Custom Bar Chart Example");
chart.pack();
RefineryUtilities.centerFrameOnScreen(chart);
chart.setVisible(true);
}
}
কাস্টমাইজেশন:
- Gridline visibility: X এবং Y অক্ষের গ্রিডলাইন দৃশ্যমান করা হয়েছে।
- Gridline color: X এবং Y অক্ষের গ্রিডলাইনগুলোর রঙ পরিবর্তন করা হয়েছে (লাল এবং নীল)।
2. XYPlot কাস্টমাইজেশন
XYPlot হলো XYDataset এর জন্য ব্যবহৃত প্লট, যা XY Chart এবং Scatter Plot তৈরি করতে ব্যবহৃত হয়। এটি ডেটার উপর নির্ভর করে বিভিন্ন কাস্টমাইজেশন করার সুযোগ দেয়।
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class XYPlotCustomization extends ApplicationFrame {
public XYPlotCustomization(String title) {
super(title);
JFreeChart chart = createChart(createDataset());
ChartPanel panel = new ChartPanel(chart);
panel.setPreferredSize(new java.awt.Dimension(800, 600));
setContentPane(panel);
}
private static XYSeriesCollection createDataset() {
XYSeries series = new XYSeries("Data Points");
series.add(1.0, 5.0);
series.add(2.0, 10.0);
series.add(3.0, 15.0);
series.add(4.0, 20.0);
XYSeriesCollection dataset = new XYSeriesCollection(series);
return dataset;
}
private static JFreeChart createChart(XYSeriesCollection dataset) {
JFreeChart chart = ChartFactory.createXYLineChart(
"XY Plot Example", // Title
"X-Axis", // X-Axis Label
"Y-Axis", // Y-Axis Label
dataset, // Dataset
org.jfree.chart.plot.PlotOrientation.VERTICAL, // Orientation
true, // Show Legend
true, // Tooltips
false // URLs
);
// XYPlot কাস্টমাইজেশন
XYPlot plot = chart.getXYPlot();
plot.setDomainGridlinesVisible(true); // X-Axis grid lines visible
plot.setRangeGridlinesVisible(true); // Y-Axis grid lines visible
plot.setDomainGridlinePaint(java.awt.Color.GREEN); // X-Axis grid line color
plot.setRangeGridlinePaint(java.awt.Color.ORANGE); // Y-Axis grid line color
return chart;
}
public static void main(String[] args) {
XYPlotCustomization chart = new XYPlotCustomization("XY Plot Customization Example");
chart.pack();
RefineryUtilities.centerFrameOnScreen(chart);
chart.setVisible(true);
}
}
কাস্টমাইজেশন:
- Gridline visibility: X এবং Y অক্ষের গ্রিডলাইন দেখানো হয়েছে।
- Gridline color: X এবং Y অক্ষের গ্রিডলাইনগুলোর রঙ পরিবর্তন করা হয়েছে (সবুজ এবং কমলা)।
3. PiePlot কাস্টমাইজেশন
PiePlot হলো Pie Chart তৈরি করার জন্য ব্যবহৃত প্লট। এটি বিভিন্ন পি স্লাইস বা ভাগের রঙ এবং লেবেল কাস্টমাইজ করতে সাহায্য করে।
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import javax.swing.*;
public class PieChartCustomization {
public static void main(String[] args) {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("Java", 50);
dataset.setValue("Python", 30);
dataset.setValue("C++", 20);
JFreeChart chart = ChartFactory.createPieChart(
"Programming Language Usage", // Chart Title
dataset, // Dataset
true, // Show legend
true, // Show tooltips
false // Show URLs
);
// PiePlot কাস্টমাইজেশন
PiePlot plot = (PiePlot) chart.getPlot();
plot.setSectionPaint("Java", java.awt.Color.RED); // "Java" section red
plot.setSectionPaint("Python", java.awt.Color.GREEN); // "Python" section green
plot.setSectionPaint("C++", java.awt.Color.BLUE); // "C++" section blue
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(600, 400));
// JFrame এ চার্ট প্রদর্শন করা
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
কাস্টমাইজেশন:
- Section color: প্রতিটি স্লাইসের রঙ পরিবর্তন করা হয়েছে।
- Tooltips: প্রতিটি স্লাইসের টুলটিপ দেখানোর ব্যবস্থা করা হয়েছে।
উপসংহার
Plot Interface JFreeChart-এ চার্ট কাস্টমাইজেশনের জন্য একটি গুরুত্বপূর্ণ উপাদান। CategoryPlot, XYPlot, এবং PiePlot সহ বিভিন্ন প্লটের মাধ্যমে আমরা ডেটার উপস্থাপনা এবং চার্টের শৈলী কাস্টমাইজ করতে পারি। JFreeChart-এ Plot Interface ব্যবহার করে চার্টের গ্রিডলাইন, রঙ, টুলটিপ, এবং লেবেল ইত্যাদি কাস্টমাইজ করা সম্ভব, যা একটি চার্টের গ্রাফিক্যাল উপস্থাপনাকে আরও আকর্ষণীয় এবং বোধগম্য করে তোলে।
JFreeChart লাইব্রেরি আপনাকে চার্টের প্লটের (XYPlot এবং CategoryPlot) বিভিন্ন উপাদান কাস্টমাইজ করার সুযোগ দেয়। XYPlot এবং CategoryPlot হলো JFreeChart এর প্লটিং অঙ্গ যা ডেটা প্রদর্শনের জন্য ব্যবহৃত হয়। এই প্লটগুলোর মাধ্যমে আপনি আপনার চার্টের অক্ষ (axis), গ্রিডলাইন, লাইন, রঙ এবং অন্যান্য ভিজ্যুয়াল উপাদান কাস্টমাইজ করতে পারবেন। এখানে আমরা XYPlot এবং CategoryPlot এর কাস্টমাইজেশন পদ্ধতি দেখব।
XYPlot কাস্টমাইজেশন
XYPlot হলো XYChart (যেমন Line Chart বা Scatter Plot) এর প্লট অংশ। এটি X এবং Y অক্ষকে নিয়ন্ত্রণ করে এবং ডেটা পয়েন্টগুলি প্লট করে। এটি খুবই কাস্টমাইজযোগ্য এবং বিভিন্ন ভিজ্যুয়াল উপাদানগুলি পরিবর্তন করা যায়।
১. XYPlot এর অক্ষ কাস্টমাইজ করা
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.axis.NumberAxis;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class XYPlotCustomization {
public static void main(String[] args) {
// XYSeries তৈরি করা
XYSeries series = new XYSeries("Temperature");
series.add(1, 30.5);
series.add(2, 31.5);
series.add(3, 32.0);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// XYPlot তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Temperature Over Time", // Chart Title
"Time", // X-Axis Label
"Temperature", // Y-Axis Label
dataset // Dataset
);
XYPlot plot = chart.getXYPlot();
// X-Axis কাস্টমাইজ করা
NumberAxis xAxis = new NumberAxis("Custom Time");
xAxis.setLabelFont(new Font("Arial", Font.BOLD, 12));
plot.setDomainAxis(xAxis);
// Y-Axis কাস্টমাইজ করা
NumberAxis yAxis = new NumberAxis("Custom Temperature");
yAxis.setRange(30, 35); // Y-Axis range 30 থেকে 35
yAxis.setLabelFont(new Font("Arial", Font.BOLD, 12));
plot.setRangeAxis(yAxis);
// Gridline কাস্টমাইজ করা
plot.setDomainGridlinePaint(Color.BLUE);
plot.setRangeGridlinePaint(Color.RED);
// ChartPanel তৈরি করা
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.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
২. XYPlot এর লাইন এবং রঙ কাস্টমাইজ করা
plot.getRenderer().setSeriesPaint(0, Color.GREEN); // লাইন রঙ পরিবর্তন
plot.getRenderer().setSeriesStroke(0, new BasicStroke(2.0f)); // লাইন স্ট্রোক পরিবর্তন
এখানে আমরা XYPlot এর লাইন রঙ এবং স্ট্রোক কাস্টমাইজ করেছি। setSeriesPaint() ব্যবহার করে লাইন রঙ পরিবর্তন এবং setSeriesStroke() ব্যবহার করে স্ট্রোক বা লাইনটির বেধ কাস্টমাইজ করা হয়েছে।
৩. XYPlot এর গ্রিডলাইন কাস্টমাইজ করা
plot.setDomainGridlinePaint(Color.GRAY); // X-Axis gridline রঙ পরিবর্তন
plot.setRangeGridlinePaint(Color.YELLOW); // Y-Axis gridline রঙ পরিবর্তন
এখানে, XYPlot এর গ্রিডলাইনগুলোর রঙ পরিবর্তন করা হয়েছে।
CategoryPlot কাস্টমাইজেশন
CategoryPlot হলো CategoryChart (যেমন Bar Chart, Line Chart) এর প্লট অংশ। এটি মূলত ক্যাটেগরি ভিত্তিক ডেটা প্লট করে। CategoryPlot-এ বিভিন্ন ধরনের কাস্টমাইজেশন করা যেতে পারে যেমন অক্ষের রঙ, গ্রিডলাইন রঙ, লাইন স্টাইল ইত্যাদি।
১. CategoryPlot এর অক্ষ কাস্টমাইজ করা
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.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
public class CategoryPlotCustomization {
public static void main(String[] args) {
// DefaultCategoryDataset তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(5, "Sales", "January");
dataset.addValue(7, "Sales", "February");
dataset.addValue(6, "Sales", "March");
// Bar Chart তৈরি
JFreeChart chart = ChartFactory.createBarChart(
"Monthly Sales", // Chart Title
"Month", // X-Axis Label
"Sales (Units)", // Y-Axis Label
dataset // Dataset
);
CategoryPlot plot = chart.getCategoryPlot();
// X-Axis কাস্টমাইজ করা
CategoryAxis xAxis = plot.getDomainAxis();
xAxis.setLabelFont(new Font("Arial", Font.BOLD, 12));
// Y-Axis কাস্টমাইজ করা
NumberAxis yAxis = (NumberAxis) plot.getRangeAxis();
yAxis.setRange(0, 10); // Y-Axis range 0 থেকে 10
yAxis.setLabelFont(new Font("Arial", Font.BOLD, 12));
// Gridline কাস্টমাইজ করা
plot.setDomainGridlinePaint(Color.GREEN); // X-Axis gridline রঙ
plot.setRangeGridlinePaint(Color.BLUE); // Y-Axis gridline রঙ
// 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.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
২. CategoryPlot এর গ্রিডলাইন কাস্টমাইজ করা
plot.setDomainGridlinePaint(Color.YELLOW); // X-Axis gridline রঙ পরিবর্তন
plot.setRangeGridlinePaint(Color.PINK); // Y-Axis gridline রঙ পরিবর্তন
এখানে, CategoryPlot এর গ্রিডলাইনগুলোর রঙ পরিবর্তন করা হয়েছে।
৩. CategoryPlot এর বার বা লাইন রঙ কাস্টমাইজ করা
plot.getRenderer().setSeriesPaint(0, Color.CYAN); // বার রঙ পরিবর্তন
এখানে, CategoryPlot-এ সিরিজ 0 এর জন্য বার রঙ পরিবর্তন করা হয়েছে।
সারসংক্ষেপ
XYPlot এবং CategoryPlot JFreeChart-এর গুরুত্বপূর্ণ উপাদান যা চার্টের ভিজ্যুয়াল উপাদান কাস্টমাইজ করার জন্য ব্যবহৃত হয়। আপনি XYPlot এবং CategoryPlot এর বিভিন্ন উপাদান যেমন অক্ষ, লাইন, গ্রিডলাইন, রঙ ইত্যাদি কাস্টমাইজ করতে পারেন।
- XYPlot সাধারণত XYCharts (যেমন Line Chart, Scatter Plot) এর জন্য ব্যবহৃত হয় এবং CategoryPlot সাধারণত CategoryCharts (যেমন Bar Chart, Line Chart) এর জন্য ব্যবহৃত হয়।
- এগুলি JFreeChart-এ চার্টের ডিজাইন এবং ভিজ্যুয়াল উপস্থাপনা উন্নত করতে সাহায্য করে।
JFreeChart লাইব্রেরি ব্যবহার করে চার্টের বিভিন্ন ভিজ্যুয়াল উপাদান কাস্টমাইজ করা যায়, যার মধ্যে Gridlines, Tick Marks, এবং Plot Orientation অন্তর্ভুক্ত। এই উপাদানগুলি চার্টের প্রদর্শন উন্নত করতে এবং ডেটার পাঠযোগ্যতা বৃদ্ধি করতে সাহায্য করে।
১. Gridlines পরিবর্তন করা
Gridlines হলো চার্টের অক্ষের উপর রেখা, যা ডেটার সাথে সম্পর্ক তৈরি করতে সাহায্য করে এবং ডেটা পয়েন্টগুলিকে সঠিকভাবে পড়তে সহজ করে তোলে। JFreeChart এ আপনি Major Gridlines এবং Minor Gridlines কাস্টমাইজ করতে পারেন।
Major Gridlines এবং Minor Gridlines পরিবর্তন করা:
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.chart.plot.Plot;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.Color;
public class GridlineExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(5, "Series1", "Category1");
dataset.addValue(10, "Series1", "Category2");
dataset.addValue(15, "Series1", "Category3");
// বার চার্ট তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Bar Chart Example", // Chart Title
"Category", // X-Axis Label
"Value", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL, // Plot orientation
true, // Show legend
true, // Show tooltips
false // Show URLs
);
// Plot অবজেক্টে অ্যাক্সেস পেতে
CategoryPlot plot = (CategoryPlot) chart.getPlot();
// Major Gridlines কাস্টমাইজ করা
plot.setDomainGridlinePaint(Color.RED); // Vertical gridlines এর রঙ লাল করা
plot.setRangeGridlinePaint(Color.BLUE); // Horizontal gridlines এর রঙ নীল করা
// Minor Gridlines কাস্টমাইজ করা
plot.setDomainMinorGridlinePaint(Color.GREEN); // Vertical minor gridlines এর রঙ সবুজ করা
plot.setRangeMinorGridlinePaint(Color.YELLOW); // Horizontal minor gridlines এর রঙ হলুদ করা
// ChartPanel তৈরি করা এবং JFrame এ প্রদর্শন করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
কোড ব্যাখ্যা:
- Major Gridlines: এগুলি সাধারণত চার্টের প্রধান রেখা, যা ব্যবহারকারীদের ডেটা বুঝতে সাহায্য করে।
- Minor Gridlines: এগুলি সাধারণত খুব সূক্ষ্ম রেখা, যা ডেটার অতিরিক্ত বিশ্লেষণ করতে সাহায্য করে।
plot.setDomainGridlinePaint(Color.RED);এবংplot.setRangeGridlinePaint(Color.BLUE);ব্যবহার করে major gridlines এর রঙ পরিবর্তন করা হয়েছে।
২. Tick Marks পরিবর্তন করা
Tick Marks হলো অক্ষের উপর চিহ্ন যা প্রতিটি বিভাগ বা পয়েন্ট চিহ্নিত করে। আপনি Tick Mark Labels এবং Tick Marks এর স্টাইল পরিবর্তন করতে পারেন।
Tick Marks কাস্টমাইজ করা:
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.axis.CategoryAxis;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.Font;
public class TickMarksExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(5, "Series1", "Category1");
dataset.addValue(10, "Series1", "Category2");
dataset.addValue(15, "Series1", "Category3");
// বার চার্ট তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Bar Chart Example", // Chart Title
"Category", // X-Axis Label
"Value", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL, // Plot orientation
true, // Show legend
true, // Show tooltips
false // Show URLs
);
// Plot অবজেক্টে অ্যাক্সেস পেতে
CategoryPlot plot = (CategoryPlot) chart.getPlot();
// CategoryAxis টিক মার্ক কাস্টমাইজ করা
CategoryAxis axis = plot.getDomainAxis();
axis.setTickLabelFont(new Font("Arial", Font.BOLD, 14)); // Tick label font পরিবর্তন
axis.setTickMarkPaint(java.awt.Color.GREEN); // Tick marks এর রঙ সবুজ করা
// ChartPanel তৈরি করা এবং JFrame এ প্রদর্শন করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
কোড ব্যাখ্যা:
axis.setTickLabelFont(new Font("Arial", Font.BOLD, 14));ব্যবহার করে tick labels এর ফন্ট পরিবর্তন করা হয়েছে।axis.setTickMarkPaint(Color.GREEN);ব্যবহার করে tick marks এর রঙ পরিবর্তন করা হয়েছে।
৩. Plot Orientation পরিবর্তন করা
Plot Orientation দ্বারা চার্টের প্লটের অক্ষের অবস্থান নির্ধারণ করা হয়। এটি Vertical (উল্লম্ব) এবং Horizontal (অনুভূমিক) দুটি অপশনে থাকতে পারে।
Plot Orientation পরিবর্তন করা:
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.category.DefaultCategoryDataset;
import javax.swing.*;
public class PlotOrientationExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(5, "Series1", "Category1");
dataset.addValue(10, "Series1", "Category2");
dataset.addValue(15, "Series1", "Category3");
// চার্ট তৈরি করা (Orientation পরিবর্তন করা)
JFreeChart chart = ChartFactory.createBarChart(
"Bar Chart Example", // Chart Title
"Category", // X-Axis Label
"Value", // Y-Axis Label
dataset, // Dataset
PlotOrientation.HORIZONTAL, // Horizontal Plot Orientation
true, // Show legend
true, // Show tooltips
false // Show URLs
);
// ChartPanel তৈরি করা এবং JFrame এ প্রদর্শন করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
কোড ব্যাখ্যা:
PlotOrientation.HORIZONTALব্যবহার করে chart orientation horizontal (অনুভূমিক) করা হয়েছে। আপনি চাইলেPlotOrientation.VERTICALদিয়ে এটি উল্লম্ব (Vertical) করতে পারেন।
সারসংক্ষেপ
Gridlines, Tick Marks, এবং Plot Orientation JFreeChart এর প্রধান কাস্টমাইজেশন বৈশিষ্ট্য। এই উপাদানগুলো পরিবর্তন করে আপনি আপনার চার্টের ভিজ্যুয়াল উপস্থাপনাকে আরও উন্নত এবং বোধগম্য করতে পারেন। Gridlines ডেটার সঠিকতা এবং সম্পর্ক প্রদর্শনে সাহায্য করে, Tick Marks ক্যাটেগরি বা মানের সহজে পড়া নিশ্চিত করে, এবং Plot Orientation চার্টের এক্স-অক্ষ এবং ওয়াই-অক্ষের অবস্থান পরিবর্তন করে। JFreeChart এ এই উপাদানগুলি কাস্টমাইজ করার মাধ্যমে আপনি একটি প্রফেশনাল এবং সহজবোধ্য গ্রাফিক্যাল রিপ্রেজেন্টেশন তৈরি করতে পারেন।
JFreeChart ব্যবহার করে আপনি আপনার চার্টের plot background (প্লটের ব্যাকগ্রাউন্ড) এবং plot foreground (প্লটের ফরগ্রাউন্ড) কাস্টমাইজ করতে পারেন, যা চার্টের চেহারা এবং অনুভূতিকে অনেক উন্নত এবং আকর্ষণীয় করে তোলে। এই কাস্টমাইজেশন ব্যবহারকারীর অভিজ্ঞতাকে আরও উন্নত করতে সহায়ক এবং চার্টের ডিজাইনকে আপনার প্রয়োজন অনুযায়ী মানানসই করতে পারে।
নিচে plot background এবং plot foreground কাস্টমাইজ করার পদ্ধতি নিয়ে বিস্তারিত আলোচনা করা হলো।
১. Plot Background Customization
Plot background হল সেই অংশ যা চার্টের ডেটা বা গ্রাফিক্সের ব্যাকগ্রাউন্ড হিসেবে কাজ করে। আপনি এটি color, image, বা gradient দিয়ে কাস্টমাইজ করতে পারেন। এর মাধ্যমে আপনি আপনার চার্টের ব্যাকগ্রাউন্ডে বিভিন্ন শেড বা প্যাটার্ন যুক্ত করতে পারবেন।
Plot Background Color Change
আপনি প্লটের ব্যাকগ্রাউন্ডের রঙ পরিবর্তন করতে পারেন নিচের কোডটি ব্যবহার করে:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
public class PlotBackgroundExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Category 1", "January");
dataset.addValue(20, "Category 1", "February");
// চার্ট তৈরি
JFreeChart chart = ChartFactory.createBarChart(
"Bar Chart Example", // চার্টের শিরোনাম
"Month", // X-Axis লেবেল
"Value", // Y-Axis লেবেল
dataset // ডেটাসেট
);
// প্লট ব্যাকগ্রাউন্ড কাস্টমাইজ করা
Plot plot = chart.getPlot();
plot.setBackgroundPaint(Color.LIGHT_GRAY); // ব্যাকগ্রাউন্ডে হালকা ধূসর রঙ
// চার্ট প্যানেল তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট প্রদর্শন করা
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এই কোডে setBackgroundPaint মেথড ব্যবহার করা হয়েছে, যা plot ব্যাকগ্রাউন্ডের রঙ পরিবর্তন করে।
Plot Background Image Set করা
আপনি প্লটের ব্যাকগ্রাউন্ডে একটি ইমেজও সেট করতে পারেন:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import javax.imageio.ImageIO;
public class PlotBackgroundImageExample {
public static void main(String[] args) {
try {
// ডেটাসেট তৈরি
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Category 1", "January");
dataset.addValue(20, "Category 1", "February");
// চার্ট তৈরি
JFreeChart chart = ChartFactory.createBarChart(
"Bar Chart with Background Image", // চার্টের শিরোনাম
"Month", // X-Axis লেবেল
"Value", // Y-Axis লেবেল
dataset // ডেটাসেট
);
// ব্যাকগ্রাউন্ড ইমেজ সেট করা
Plot plot = chart.getPlot();
plot.setBackgroundImage(ImageIO.read(new File("background.jpg"))); // ইমেজ ফাইল ব্যবহার
// চার্ট প্যানেল তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট দেখানো
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
এখানে, setBackgroundImage মেথড ব্যবহার করা হয়েছে, যেখানে ImageIO.read() মাধ্যমে একটি ইমেজ ফাইল ব্যাকগ্রাউন্ড হিসেবে সেট করা হয়েছে।
২. Plot Foreground Customization
Plot foreground সাধারণত plot-এর উপরের অংশের সেটিংস এবং এটিতে grid lines, axis labels, এবং chart content থাকে। আপনি foreground কাস্টমাইজ করে চার্টের রঙ এবং অন্যান্য বৈশিষ্ট্য কাস্টমাইজ করতে পারেন।
Grid Lines Customization
আপনি প্লটের grid lines কাস্টমাইজ করতে পারেন:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
public class PlotForegroundExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Category 1", "January");
dataset.addValue(20, "Category 1", "February");
// চার্ট তৈরি
JFreeChart chart = ChartFactory.createBarChart(
"Bar Chart with Grid Lines", // চার্টের শিরোনাম
"Month", // X-Axis লেবেল
"Value", // Y-Axis লেবেল
dataset // ডেটাসেট
);
// প্লট কাস্টমাইজেশন
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setDomainGridlinePaint(Color.BLUE); // X-Axis grid lines রঙ
plot.setRangeGridlinePaint(Color.RED); // Y-Axis grid lines রঙ
// চার্ট প্যানেল তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট প্রদর্শন করা
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এখানে, setDomainGridlinePaint এবং setRangeGridlinePaint মেথড ব্যবহার করা হয়েছে, যার মাধ্যমে আপনি X এবং Y অ্যাক্সিসের grid lines এর রঙ পরিবর্তন করতে পারেন।
Foreground Color Customization (Axis and Labels)
প্লটের axis labels, axis ticks, এবং title কাস্টমাইজ করার জন্য আপনি setLabelPaint মেথড ব্যবহার করতে পারেন।
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.plot.Plot;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
public class AxisAndForegroundCustomization {
public static void main(String[] args) {
// ডেটাসেট তৈরি
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10, "Category 1", "January");
dataset.addValue(20, "Category 1", "February");
// চার্ট তৈরি
JFreeChart chart = ChartFactory.createBarChart(
"Bar Chart with Axis Customization", // Chart Title
"Month", // X-Axis Label
"Value", // Y-Axis Label
dataset // Dataset
);
// প্লট কাস্টমাইজেশন
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.getDomainAxis().setLabelPaint(Color.GREEN); // X-axis label রঙ
plot.getRangeAxis().setLabelPaint(Color.ORANGE); // Y-axis label রঙ
plot.setRangeGridlinePaint(Color.BLACK); // Grid lines কালো
// চার্ট প্যানেল তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame এ চার্ট দেখানো
JFrame frame = new JFrame();
frame.setContentPane(chartPanel);
frame.pack();
frame.setVisible(true);
}
}
এখানে, setLabelPaint মেথড ব্যবহার করা হয়েছে যা X-axis এবং Y-axis এর লেবেল রঙ পরিবর্তন করতে সহায়ক।
সারসংক্ষেপ
JFreeChart-এ Plot Background এবং Foreground কাস্টমাইজেশন আপনার চার্টের চেহারা এবং অনুভূতিকে আরও উন্নত এবং বিশেষায়িত করতে সাহায্য করে। Plot Background এর রঙ বা ইমেজ পরিবর্তন, এবং Plot Foreground এর grid lines, axis labels ইত্যাদি কাস্টমাইজ করা সম্ভব। এই কাস্টমাইজেশনগুলি আপনার চার্টকে আরও পেশাদার এবং আকর্ষণীয় করে তোলে, যা দর্শকদের জন্য আরও পরিষ্কার ও অর্থবোধক তথ্য উপস্থাপন করে।
Read more