I want to resolve next issue:
I have JPanel and want to locate on this panel XYBarChart and XYLineChart.
Which data model I must use? Can I resolve this task using JFreeChart?
When I have learned Delphi in lyceum (11th form, and now I'm student of forth course) I remembered that built-in Delphi TChart component can do this (locate all types of data models in one component TChart).
Thanks a lot for any answering.
Best regards, Alex
P.S. Am I right using next code to resolve problem.
Code: Select all
public class BarChart extends JPanel {
public BarChart(LinkedList classes) {
XYBarDataset dataset = createDataset(classes);
JFreeChart chart = createChart(dataset);
chart = customizeChart(chart);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new Dimension(500, 270));
add(chartPanel);
setVisible(true);
}
private XYBarDataset createDataset(LinkedList classes) {
XYSeriesCollection coll = new XYSeriesCollection();
XYSeries series = new XYSeries("Relative Frequencies");
for (int i = 0; i < classes.size(); i++) {
Class c = (Class)classes.get(i);
series.add(c.getBegin(), c.getRelativeFrequency());
}
XYSeries relFreqSeries = new XYSeries("Next series");
relFreqSeries.add(134, 123);
relFreqSeries.add(135, 122);
relFreqSeries.add(136, 121);
relFreqSeries.add(137, 120);
relFreqSeries.add(138, 124);
relFreqSeries.add(139, 125);
relFreqSeries.add(130, 126);
coll.addSeries(series);
coll.addSeries(relFreqSeries);
XYBarDataset dataset = new XYBarDataset(coll, ((Class)classes.get(0)).getEnd() - ((Class)classes.get(0)).getBegin());
return dataset;
}
private JFreeChart createChart(final IntervalXYDataset dataset){
JFreeChart chart = ChartFactory.createXYBarChart(
"Class frequency", // chart title
"Elements", // domain axis label
/*"Frequencies"*/false, // range axis label
"Frequencies",
dataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips?
false // URLs?
);
return chart;
}
private JFreeChart customizeChart(final JFreeChart chart){
return chart;
}
}