JFreeChart একটি জনপ্রিয় Java লাইব্রেরি যা চার্ট তৈরি করার জন্য ব্যবহৃত হয়। সাধারণত, জেফ্রিচার্টে 2D Charts তৈরি করা হয়, তবে কিছু ক্ষেত্রে 3D ইফেক্ট বা ডেপথ এবং পার্সপেকটিভ কনফিগারেশনের প্রয়োজন হতে পারে, যেমন 3D বার চার্ট বা 3D পি-চার্ট।
এখানে আমরা দেখব 3D Chart তৈরি করার জন্য জেফ্রিচার্টে Depth এবং Perspective কিভাবে কনফিগার করা যায়। আপনি 2D চার্টে কিছু ভিজ্যুয়াল ইফেক্ট প্রয়োগ করে ডেপথ এবং পার্সপেকটিভ তৈরি করতে পারেন, তবে যেহেতু জেফ্রিচার্ট নিজে 3D চার্টের জন্য সরাসরি সমর্থন দেয় না, আমাদেরকে কিছু নির্দিষ্ট কাস্টমাইজেশন করতে হয়।
1. 3D Chart এ Depth এবং Perspective কনফিগারেশন
যেহেতু JFreeChart নিজে 3D চার্ট তৈরি করার জন্য প্রস্তুত নয়, তবে আপনি JFreeChart এর CategoryPlot বা XYPlot ব্যবহার করে কিছু ভিজ্যুয়াল কাস্টমাইজেশন করতে পারেন যা 3D-এর মতো ডেপথ এবং পার্সপেকটিভ সৃষ্টি করে।
আমরা এখানে 3D Bar Chart এবং 3D Pie Chart এর জন্য Depth এবং Perspective কাস্টমাইজ করার কিছু উদাহরণ দেখব।
2. 3D Bar Chart তৈরি এবং Depth/Perspective কনফিগারেশন
3D Bar Chart তৈরি করার জন্য, সাধারণত আমরা CategoryPlot ব্যবহার করি এবং কিছু কাস্টম স্টাইল প্রয়োগ করে ডেপথ এবং পার্সপেকটিভ তৈরি করি।
উদাহরণ: 3D Bar Chart এর Depth কনফিগারেশন
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 org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.ui.ApplicationFrame;
import org.jfree.chart.ui.RefineryUtilities;
import java.awt.*;
public class DepthBarChartExample extends ApplicationFrame {
public DepthBarChartExample(String title) {
super(title);
JFreeChart chart = createChart(createDataset());
// CategoryPlot ব্যবহার করে Depth কনফিগার করা
CategoryPlot plot = (CategoryPlot) chart.getPlot();
BarRenderer renderer = (BarRenderer) plot.getRenderer();
// 3D effect দিতে renderer সেটিংস কাস্টমাইজ করা
renderer.setShadowVisible(true); // Shadow effect to create depth
renderer.setSeriesPaint(0, Color.BLUE);
renderer.setSeriesPaint(1, Color.RED);
// Chart Panel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
setContentPane(chartPanel);
}
private DefaultCategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "Category1", "January");
dataset.addValue(200, "Category1", "February");
dataset.addValue(150, "Category1", "March");
dataset.addValue(50, "Category1", "April");
return dataset;
}
private JFreeChart createChart(DefaultCategoryDataset dataset) {
return ChartFactory.createBarChart3D(
"3D Bar Chart", // Chart title
"Month", // X-Axis Label
"Value", // Y-Axis Label
dataset, // Dataset
PlotOrientation.VERTICAL, // Chart Orientation
true, // Include legend
true, // Tooltips enabled
false // URLs enabled
);
}
public static void main(String[] args) {
DepthBarChartExample chart = new DepthBarChartExample("3D Bar Chart with Depth");
chart.pack();
RefineryUtilities.centerFrameOnScreen(chart);
chart.setVisible(true);
}
}
ব্যাখ্যা:
- BarRenderer.setShadowVisible(true): এটি চার্টে ডেপথ তৈরি করার জন্য শ্যাডো প্রভাব যোগ করে।
- createBarChart3D():
createBarChart3D()মেথডটি 3D বার চার্ট তৈরি করতে সহায়তা করে।
এটি চার্টে ডেপথ প্রভাব এবং পার্সপেকটিভ দিতে সাহায্য করে।
3. 3D Pie Chart এবং Perspective কনফিগারেশন
এখানে, আমরা একটি 3D Pie Chart তৈরি করব এবং এর পার্সপেকটিভ কনফিগার করব।
উদাহরণ: 3D Pie Chart এর Perspective কনফিগারেশন
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.ui.ApplicationFrame;
import org.jfree.chart.ui.RefineryUtilities;
import org.jfree.chart.plot.PlotOrientation;
import java.awt.*;
public class PieChartWithPerspective extends ApplicationFrame {
public PieChartWithPerspective(String title) {
super(title);
JFreeChart chart = createChart(createDataset());
// PiePlot3D ব্যবহার করে Perspective কনফিগার করা
PiePlot3D plot = (PiePlot3D) chart.getPlot();
plot.setSectionDepth(0.20); // Set depth of the pie chart sections
plot.setStartAngle(90); // Set perspective angle
// Chart Panel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
setContentPane(chartPanel);
}
private DefaultPieDataset createDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("Category1", 40);
dataset.setValue("Category2", 30);
dataset.setValue("Category3", 20);
dataset.setValue("Category4", 10);
return dataset;
}
private JFreeChart createChart(DefaultPieDataset dataset) {
return ChartFactory.createPieChart3D(
"3D Pie Chart with Perspective", // Chart Title
dataset, // Dataset
true, // Show legend
true // Tooltips
);
}
public static void main(String[] args) {
PieChartWithPerspective chart = new PieChartWithPerspective("3D Pie Chart with Perspective");
chart.pack();
RefineryUtilities.centerFrameOnScreen(chart);
chart.setVisible(true);
}
}
ব্যাখ্যা:
- PiePlot3D.setSectionDepth(): এটি পি-চার্টের সেকশনের গভীরতা (depth) কাস্টমাইজ করে।
- PiePlot3D.setStartAngle(): এটি পি-চার্টের পার্সপেকটিভ এঙ্গেল নির্ধারণ করে। এখানে 90° ব্যবহার করা হয়েছে যাতে চার্টের সেকশনগুলো আরও স্পষ্টভাবে দৃশ্যমান হয়।
4. Perspective এবং Depth কাস্টমাইজেশন
JFreeChart এর মধ্যে সঠিক Depth এবং Perspective কনফিগারেশন করার জন্য কিছু অতিরিক্ত কাস্টমাইজেশন করা যায়:
4.1 Bar Chart Depth কাস্টমাইজেশন
plot.setDomainGridlinesVisible(false); // Hide domain gridlines for clearer 3D effect
plot.setRangeGridlinesVisible(false); // Hide range gridlines for better visualization
4.2 Pie Chart Perspective কাস্টমাইজেশন
plot.setDepthFactor(0.15); // Adjust the depth factor for more 3D effect
plot.setExplodePercent("Category1", 0.1); // Exploding a section for emphasis
5. সারাংশ
JFreeChart দিয়ে Depth এবং Perspective কনফিগার করা সম্ভব, তবে এটি সরাসরি 3D চার্ট তৈরি করার জন্য প্রস্তুত নয়। তবে 3D Bar Chart, 3D Pie Chart, এবং XY Plot-এ কিছু ভিজ্যুয়াল কাস্টমাইজেশন করে আপনি ডেপথ এবং পার্সপেকটিভ অর্জন করতে পারেন। JFreeChart এর মাধ্যমে আপনি আপনার চার্টের ভিজ্যুয়াল স্টাইল আরও আকর্ষণীয় এবং ডাইনামিক করতে পারেন, যা আপনার ডেটার উপস্থাপনাকে আরো কার্যকরী করে তোলে।
Read more