1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| package analysisResults;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
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.XYPlot;
import org.jfree.chart.renderer.xy.XYShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
public class PlotFrame extends ApplicationFrame {
public static XYSeries series1;
public static XYSeries series2;
public static XYSeriesCollection dataset;
public JFreeChart chart;
public static ChartPanel chartPanel;
public static XYPlot plot;
public static XYShapeRenderer renderer;
public double size;
public double delta;
public static Shape shape1, shape2;
public static float[] backUpData1, backUpData2;
public PlotFrame(String title, float[] dataCol1, float[] dataCol2, String header1, String header2) {
super(title);
setDefaultCloseOperation(ApplicationFrame.DISPOSE_ON_CLOSE);
backUpData1=dataCol1;
backUpData2=dataCol2;
dataset = new XYSeriesCollection();
series1 = new XYSeries("Value");
for(int i=0; i<dataCol1.length; i++){
series1.add(dataCol1[i], dataCol2[i]);
}
dataset.addSeries(series1);
chart = ChartFactory.createScatterPlot(
title, // title
header1, header2, // axis labels
dataset, // dataset
PlotOrientation.VERTICAL,
true, // legend? yes
true, // tooltips? yes
false // URLs? no
);
chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(chartPanel);
plot = chart.getXYPlot( );
renderer = new XYShapeRenderer( );
size = 5.0;
delta = size / 2.0;
shape2 = new Rectangle2D.Double(-delta, -delta, size, size);
shape1 = new Ellipse2D.Double(-delta, -delta, size, size);
renderer.setSeriesPaint( 0 , Color.BLUE );
renderer.setSeriesShape(0, shape1);
renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
plot.setRenderer( renderer );
setContentPane( chartPanel );
}
public static void makeSelection(float[] dataSelect1, float[] dataSelect2){
//clear the previous datas
if(dataset.getSeriesCount()>1){
dataset.removeSeries(1);
}
dataset.removeSeries(0);
//create in first the selection serie, because the second serie is hidden by the first
series2 = new XYSeries("Selection");
for(int i=0; i<dataSelect1.length; i++){
series2.add(dataSelect1[i], dataSelect2[i]);
}
//define shape and color of the serie
renderer.setSeriesPaint( 0 , Color.RED );
renderer.setSeriesShape(0, shape2);
renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
dataset.addSeries(series2);
//re-create the first serie and add it in second
series1 = new XYSeries("Value");
for(int i=0; i<backUpData1.length; i++){
series1.add(backUpData1[i], backUpData2[i]);
}
renderer.setSeriesPaint( 1 , Color.BLUE );
renderer.setSeriesShape(1, shape1);
renderer.setSeriesStroke(1 , new BasicStroke( 4.0f ) );
dataset.addSeries(series1);
plot.setRenderer( renderer );
}
} |