JFreeChart লাইব্রেরি ব্যবহার করে আপনি data points এর জন্য custom shapes এবং styles ব্যবহার করতে পারেন, যা আপনার চার্টের ভিজ্যুয়াল এপিয়ারেন্সকে আরও আকর্ষণীয় এবং ইউনিক করে তোলে। Custom Shapes ব্যবহার করে, আপনি data points-কে বিভিন্ন আকারে (যেমন বৃত্ত, বর্গাকার, ত্রিভুজ, ইত্যাদি) প্রদর্শন করতে পারেন, এবং Styles ব্যবহার করে তাদের রঙ, আকার এবং অন্যান্য বৈশিষ্ট্য কাস্টমাইজ করতে পারেন।
এটি বিশেষভাবে যখন আপনি scatter plots, line charts, বা XY plots তৈরি করছেন, তখন সাহায্যকারী হতে পারে, যেখানে ডেটার পয়েন্টগুলো আলাদা আলাদা শেপ এবং স্টাইলে প্রদর্শিত হতে পারে।
Custom Shapes for Data Points
JFreeChart-এ custom shapes যোগ করতে হলে, আপনি XYPlot বা CategoryPlot এর renderer ব্যবহার করতে পারেন এবং setSeriesShape() অথবা setItemShape() মেথড ব্যবহার করে প্রতিটি data point এর শেপ কাস্টমাইজ করতে পারেন।
Custom Shape উদাহরণ (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.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Ellipse2D;
public class CustomShapeExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
XYSeries series = new XYSeries("Data Points");
series.add(1.0, 1.0);
series.add(2.0, 4.0);
series.add(3.0, 9.0);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// চার্ট তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Custom Shapes Example", // চার্টের শিরোনাম
"X-Axis", // এক্স-অক্ষের নাম
"Y-Axis", // ওয়াই-অক্ষের নাম
dataset // ডেটাসেট
);
// XYPlot থেকে Renderer পেতে হবে
XYPlot plot = chart.getXYPlot();
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
plot.setRenderer(renderer);
// Custom Shape সেট করা
Ellipse2D.Double customShape = new Ellipse2D.Double(-4, -4, 8, 8); // বৃত্ত আকৃতি
renderer.setSeriesShape(0, customShape); // সিরিজ 0 এর জন্য custom shape সেট করা
renderer.setSeriesPaint(0, Color.RED); // সিরিজ 0 এর পয়েন্টগুলোর রঙ রেড করা
// চার্ট প্যানেল তৈরি করা
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);
}
}
ব্যাখ্যা:
- Ellipse2D.Double ব্যবহার করে একটি custom shape (বৃত্ত) তৈরি করা হয়েছে।
- setSeriesShape(0, customShape) মেথড ব্যবহার করে XYLineAndShapeRenderer এর জন্য প্রথম সিরিজের পয়েন্টের শেপ কাস্টমাইজ করা হয়েছে।
- setSeriesPaint(0, Color.RED) ব্যবহার করে, সিরিজের পয়েন্টগুলোর রঙ রেড করা হয়েছে।
Custom Styles for Data Points
JFreeChart-এ data points এর জন্য custom styles কাস্টমাইজ করতে হলে, আপনি XYLineAndShapeRenderer বা CategoryItemRenderer ব্যবহার করতে পারেন। আপনি পয়েন্টগুলোর color, size, এবং stroke কাস্টমাইজ করতে পারবেন।
Custom Style উদাহরণ (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.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Ellipse2D;
public class CustomStyleExample {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
XYSeries series = new XYSeries("Styled Data Points");
series.add(1.0, 1.0);
series.add(2.0, 4.0);
series.add(3.0, 9.0);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// চার্ট তৈরি করা
JFreeChart chart = ChartFactory.createXYLineChart(
"Custom Style Example", // চার্টের শিরোনাম
"X-Axis", // এক্স-অক্ষের নাম
"Y-Axis", // ওয়াই-অক্ষের নাম
dataset // ডেটাসেট
);
// XYPlot থেকে Renderer পেতে হবে
XYPlot plot = chart.getXYPlot();
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
plot.setRenderer(renderer);
// Custom Shape তৈরি করা (বৃত্ত)
Ellipse2D.Double customShape = new Ellipse2D.Double(-5, -5, 10, 10);
renderer.setSeriesShape(0, customShape);
// পয়েন্টের জন্য Custom Style (রঙ, আকার এবং স্ট্রোক)
renderer.setSeriesPaint(0, Color.GREEN); // পয়েন্টের রঙ
renderer.setSeriesStroke(0, new BasicStroke(2.0f)); // পয়েন্টের স্ট্রোক বা সীমানা
// চার্ট প্যানেল তৈরি করা
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);
}
}
ব্যাখ্যা:
- Ellipse2D.Double ব্যবহার করে কাস্টম শেপ (বৃত্ত) তৈরি করা হয়েছে, এবং setSeriesShape(0, customShape) দিয়ে পয়েন্টের শেপ সেট করা হয়েছে।
- setSeriesPaint(0, Color.GREEN) এবং setSeriesStroke(0, new BasicStroke(2.0f)) ব্যবহার করে পয়েন্টের রঙ এবং আকার কাস্টমাইজ করা হয়েছে।
Scatter Plot এর জন্য Custom Shapes এবং Styles
Scatter Plot-এ data points-এর জন্য custom shapes এবং styles প্রয়োগ করা সবচেয়ে জনপ্রিয় ক্ষেত্র, কারণ এটি পয়েন্টগুলোর মধ্যে পার্থক্য স্পষ্টভাবে দেখানোর সুযোগ দেয়। আপনি বিভিন্ন ধরনের শেপ (যেমন, বৃত্ত, ত্রিভুজ, স্কোয়ার ইত্যাদি) ব্যবহার করতে পারেন এবং তাদের আকার, রঙ এবং স্টাইল কাস্টমাইজ করতে পারেন।
Scatter Plot উদাহরণ (Custom Shape এবং Style)
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.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Rectangle2D;
public class ScatterPlotCustomShapesStyles {
public static void main(String[] args) {
// ডেটাসেট তৈরি করা
XYSeries series = new XYSeries("Scatter Plot Data");
series.add(1.0, 5.0);
series.add(2.0, 7.0);
series.add(3.0, 9.0);
XYSeriesCollection dataset = new XYSeriesCollection(series);
// চার্ট তৈরি করা
JFreeChart chart = ChartFactory.createScatterPlot(
"Scatter Plot with Custom Shapes", // চার্টের শিরোনাম
"X-Axis", // এক্স-অক্ষের নাম
"Y-Axis", // ওয়াই-অক্ষের নাম
dataset // ডেটাসেট
);
// XYPlot থেকে Renderer পেতে হবে
XYPlot plot = chart.getXYPlot();
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
plot.setRenderer(renderer);
// Custom Shape তৈরি করা (স্কোয়ার)
Rectangle2D.Double customShape = new Rectangle2D.Double(-5, -5, 10, 10); // স্কোয়ার
renderer.setSeriesShape(0, customShape); // সিরিজ 0 এর জন্য custom shape সেট করা
// Custom Style (রঙ এবং আকার)
renderer.setSeriesPaint(0, Color.BLUE); // পয়েন্টের রঙ
renderer.setSeriesStroke(0, new BasicStroke(1.5f)); // পয়েন্টের স্ট্রোক
// চার্ট প্যানেল তৈরি করা
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);
}
}
ব্যাখ্যা:
- Rectangle2D.Double ব্যবহার করে custom shape (স্কোয়ার) তৈরি করা হয়েছে এবং সেটি setSeriesShape() মেথড ব্যবহার করে XYPlot-এ সেট করা হয়েছে।
- **
setSeriesPaint()** এবং setSeriesStroke() ব্যবহার করে, পয়েন্টের রঙ এবং আকার কাস্টমাইজ করা হয়েছে।
সারসংক্ষেপ
JFreeChart-এ Custom Shapes এবং Styles যোগ করার মাধ্যমে আপনি আপনার ডেটার পয়েন্টগুলিকে আরও ইউনিক এবং আকর্ষণীয় করে তুলতে পারেন। আপনি XYPlot এবং CategoryPlot এর renderer ব্যবহার করে বিভিন্ন ধরনের শেপ এবং স্টাইল কাস্টমাইজ করতে পারবেন, যা চার্টের ভিজ্যুয়াল লুক এবং ডেটা রিপ্রেজেন্টেশনকে উন্নত করবে।
Read more