package arida.ufc.br.moap.optics; import java.util.List; 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.xy.DefaultXYDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; import arida.ufc.br.moap.core.imp.Reporter; public class ReachabilityPlot<T> extends ApplicationFrame { private static final long serialVersionUID = 1L; private final Reporter report = new Reporter(getClass()); public ReachabilityPlot() { super("Reachability Plot"); } public void plot(List<OpticsObject<T>> objects){ report.setReport("Plotting"); DefaultXYDataset dataset = createDataset(objects); JFreeChart chart = ChartFactory.createXYAreaChart(getTitle(), "ordered points", "reachability distance", dataset, PlotOrientation.VERTICAL, false, true, true); ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); setContentPane(chartPanel); this.pack(); RefineryUtilities.centerFrameOnScreen(this); this.setVisible(true); } private DefaultXYDataset createDataset(List<OpticsObject<T>> objects){ report.setReport("Creating dataset"); DefaultXYDataset dataset = new DefaultXYDataset(); double[][] data = new double[2][objects.size()]; int i = 0; for(OpticsObject<T> c : objects){ data[0][i] = i; data[1][i] = c.getReachabilityDistance(); i++; } dataset.addSeries("serie1", data); return dataset; } }