JFreeChart একটি অত্যন্ত কাস্টমাইজযোগ্য চার্ট লাইব্রেরি, যা ডেটার ভিজুয়াল রিপ্রেজেন্টেশন তৈরি করার জন্য ব্যবহৃত হয়। এর মধ্যে Custom Fonts এবং Themes যোগ করার মাধ্যমে আপনি আপনার চার্টগুলিকে আরও আকর্ষণীয় এবং ব্র্যান্ডিং অনুযায়ী কাস্টমাইজ করতে পারেন।
Custom Fonts যোগ করা
JFreeChart এ আপনি সহজেই Custom Fonts যোগ করতে পারেন যাতে চার্টের টেক্সট, লেবেল এবং টাইটেল আপনার প্রয়োজন অনুসারে পরিবর্তিত হয়। Custom Fonts সাধারণত চার্টের ভিজ্যুয়াল লুক উন্নত করার জন্য ব্যবহার করা হয়, এবং এটি সহজেই Java ফন্ট API ব্যবহার করে করা যায়।
Custom Fonts ব্যবহার করার উদাহরণ
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.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
public class CustomFontExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
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");
// চার্ট তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Sales for the First Quarter", // চার্টের শিরোনাম
"Month", // এক্স-অক্ষের নাম
"Sales (in units)", // ওয়াই-অক্ষের নাম
dataset, // ডেটাসেট
PlotOrientation.VERTICAL, // প্লট অরিয়েন্টেশন
true, // লেজেন্ড দেখানো
true, // টুলটিপস
false // URL সমর্থন
);
// Custom Font সেট করা
try {
Font customFont = Font.createFont(Font.TRUETYPE_FONT, new File("path/to/your/font.ttf")).deriveFont(20f);
chart.getTitle().setFont(customFont); // টাইটেল ফন্ট সেট করা
chart.getLegend().setItemFont(customFont); // লেজেন্ড ফন্ট সেট করা
// প্লটের টেক্সট ফন্ট পরিবর্তন
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.getDomainGridlinePaint();
plot.getDomainAxis().setLabelFont(customFont);
plot.getRangeAxis().setLabelFont(customFont);
} catch (FontFormatException | IOException e) {
e.printStackTrace();
}
// চার্ট প্যানেল তৈরি করা
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);
}
}
ব্যাখ্যা:
- Font.createFont(): এখানে আমরা একটি TrueType Font ফাইল ব্যবহার করে Custom Font তৈরি করেছি। আপনাকে আপনার ফন্ট ফাইলের সঠিক পাথ প্রদান করতে হবে।
- setFont(): এটি টাইটেল, লেজেন্ড এবং অ্যাক্সিস লেবেল ফন্ট পরিবর্তন করতে ব্যবহৃত হয়।
Themes যোগ করা
JFreeChart এ থিম যোগ করার মাধ্যমে আপনি আপনার চার্টের ডিজাইন, রঙ এবং অন্যান্য উপাদান কাস্টমাইজ করতে পারেন। আপনি Plot এবং Renderer এর কাস্টম স্টাইল তৈরি করে সহজেই থিম তৈরি করতে পারেন।
Theme কাস্টমাইজেশন উদাহরণ
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.chart.plot.SpiralPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
public class CustomThemeExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10.0, "Category 1", "January");
dataset.addValue(20.0, "Category 1", "February");
dataset.addValue(30.0, "Category 1", "March");
// চার্ট তৈরি করা
JFreeChart chart = ChartFactory.createBarChart(
"Monthly Sales", // চার্টের শিরোনাম
"Month", // এক্স-অক্ষের নাম
"Sales", // ওয়াই-অক্ষের নাম
dataset, // ডেটাসেট
PlotOrientation.VERTICAL, // প্লট অরিয়েন্টেশন
true, // লেজেন্ড প্রদর্শন
true, // টুলটিপস
false // URL সমর্থন
);
// Custom Theme কাস্টমাইজেশন
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setDomainGridlinePaint(Color.GRAY); // গ্রিডলাইন রঙ পরিবর্তন
plot.setRangeGridlinePaint(Color.GRAY); // গ্রিডলাইন রঙ পরিবর্তন
// ব্যার রেন্ডারার কাস্টমাইজ করা
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setSeriesPaint(0, new Color(0, 128, 255)); // সিরিজের রঙ পরিবর্তন
// চার্টের টাইটেল কাস্টমাইজ করা
chart.setTitle(new TextTitle("Customized Theme Chart", new Font("Serif", Font.BOLD, 20), Color.RED, RectangleAnchor.TOP_CENTER));
// চার্ট প্যানেল তৈরি করা
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(): এটি গ্রিডলাইনের রঙ পরিবর্তন করতে ব্যবহৃত হয়।
- BarRenderer.setSeriesPaint(): এটি নির্দিষ্ট সিরিজের রঙ পরিবর্তন করতে ব্যবহৃত হয়।
- TextTitle: টাইটেল কাস্টমাইজ করার জন্য ফন্ট, রঙ এবং অবস্থান সেট করা হয়েছে।
Themes এর সাহায্যে আরও কাস্টমাইজেশন
- Color Palette: চার্টের রঙগুলি পরিবর্তন করতে পারেন আপনার ডিজাইন অনুসারে। যেমন, বিভিন্ন সিরিজের জন্য আলাদা রঙ ব্যবহার করা।
- Gridlines: গ্রিডলাইনের রঙ এবং স্টাইল কাস্টমাইজ করা যায় যাতে চার্টের ভিজ্যুয়াল লুক উন্নত হয়।
- Axes: এক্স-অক্ষ এবং ওয়াই-অক্ষের রঙ এবং স্টাইল পরিবর্তন করা সম্ভব।
- Legend: লেজেন্ডের অবস্থান এবং স্টাইল পরিবর্তন করা যায়।
সারসংক্ষেপ
JFreeChart এ Custom Fonts এবং Themes যোগ করা খুবই সহজ। আপনি Font.createFont() ব্যবহার করে আপনার চার্টের বিভিন্ন অংশে Custom Fonts সেট করতে পারেন। এছাড়া, Themes যোগ করে চার্টের ভিজ্যুয়াল ডিজাইন পরিবর্তন করা যায়, যেমন রঙ, গ্রিডলাইন, লেজেন্ড, এবং অন্যান্য উপাদান কাস্টমাইজ করা। এই কাস্টমাইজেশনগুলি আপনার চার্টকে আরও আকর্ষণীয় এবং ব্যবহারকারী-বান্ধব করতে সাহায্য করবে।
Read more