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