List of usage examples for org.jfree.data.xy DefaultXYDataset DefaultXYDataset
public DefaultXYDataset()
DefaultXYDataset
instance, initially containing no data. From source file:net.sf.dynamicreports.test.jasper.chart.ShowValuesChartDataTest.java
@Override public void test() { super.test(); numberOfPagesTest(1);//from w ww . j a v a2 s . c o m DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset(); categoryDataset.addValue(1.191, "row", "column"); JFreeChart chart = getChart("summary.chart1", 0); CategoryItemRenderer renderer1 = chart.getCategoryPlot().getRenderer(); Assert.assertNotNull(renderer1.getBaseItemLabelGenerator()); Assert.assertEquals("1.19", renderer1.getBaseItemLabelGenerator().generateLabel(categoryDataset, 0, 0)); Assert.assertTrue(renderer1.getBaseItemLabelsVisible()); chart = getChart("summary.chart2", 0); renderer1 = chart.getCategoryPlot().getRenderer(); Assert.assertNotNull(renderer1.getBaseItemLabelGenerator()); Assert.assertEquals("1.2", renderer1.getBaseItemLabelGenerator().generateLabel(categoryDataset, 0, 0)); Assert.assertTrue(renderer1.getBaseItemLabelsVisible()); chart = getChart("summary.chart3", 0); renderer1 = chart.getCategoryPlot().getRenderer(); Assert.assertNotNull(renderer1.getBaseItemLabelGenerator()); Assert.assertTrue(renderer1.getBaseItemLabelsVisible()); chart = getChart("summary.chart4", 0); renderer1 = chart.getCategoryPlot().getRenderer(); Assert.assertNotNull(renderer1.getBaseItemLabelGenerator()); Assert.assertTrue(renderer1.getBaseItemLabelsVisible()); chart = getChart("summary.chart5", 0); renderer1 = chart.getCategoryPlot().getRenderer(); Assert.assertNotNull(renderer1.getBaseItemLabelGenerator()); Assert.assertTrue(renderer1.getBaseItemLabelsVisible()); chart = getChart("summary.chart6", 0); renderer1 = chart.getCategoryPlot().getRenderer(); Assert.assertNotNull(renderer1.getBaseItemLabelGenerator()); Assert.assertTrue(renderer1.getBaseItemLabelsVisible()); chart = getChart("summary.chart7", 0); renderer1 = chart.getCategoryPlot().getRenderer(); Assert.assertNotNull(renderer1.getBaseItemLabelGenerator()); Assert.assertTrue(renderer1.getBaseItemLabelsVisible()); chart = getChart("summary.chart8", 0); String labelFormat = ((StandardPieSectionLabelGenerator) ((PiePlot) chart.getPlot()).getLabelGenerator()) .getLabelFormat(); Assert.assertEquals("Label format", "{0} = {1}", labelFormat); chart = getChart("summary.chart9", 0); StandardPieSectionLabelGenerator labelGenerator = (StandardPieSectionLabelGenerator) ((PiePlot) chart .getPlot()).getLabelGenerator(); labelFormat = labelGenerator.getLabelFormat(); Assert.assertEquals("Label format", "{0} = {1}", labelFormat); DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("key1", 1.192); Assert.assertEquals("key1 = 1.2", labelGenerator.generateSectionLabel(dataset, "key1")); DefaultXYDataset xyDataset = new DefaultXYDataset(); xyDataset.addSeries("key", new double[][] { new double[] { 1d }, new double[] { 1.191d } }); chart = getChart("summary.chart10", 0); XYItemRenderer renderer2 = chart.getXYPlot().getRenderer(); Assert.assertNotNull(renderer2.getBaseItemLabelGenerator()); Assert.assertEquals("1.19", renderer2.getBaseItemLabelGenerator().generateLabel(xyDataset, 0, 0)); Assert.assertTrue(renderer2.getBaseItemLabelsVisible()); chart = getChart("summary.chart11", 0); renderer2 = chart.getXYPlot().getRenderer(); Assert.assertNotNull(renderer2.getBaseItemLabelGenerator()); Assert.assertEquals("1.2", renderer2.getBaseItemLabelGenerator().generateLabel(xyDataset, 0, 0)); Assert.assertTrue(renderer2.getBaseItemLabelsVisible()); chart = getChart("summary.chart12", 0); renderer2 = chart.getXYPlot().getRenderer(); Assert.assertNotNull(renderer2.getBaseItemLabelGenerator()); Assert.assertTrue(renderer2.getBaseItemLabelsVisible()); chart = getChart("summary.chart13", 0); renderer2 = chart.getXYPlot().getRenderer(); Assert.assertNotNull(renderer2.getBaseItemLabelGenerator()); Assert.assertTrue(renderer2.getBaseItemLabelsVisible()); chart = getChart("summary.chart14", 0); renderer2 = chart.getXYPlot().getRenderer(); Assert.assertNotNull(renderer2.getBaseItemLabelGenerator()); Assert.assertTrue(renderer2.getBaseItemLabelsVisible()); chart = getChart("summary.chart15", 0); renderer2 = chart.getXYPlot().getRenderer(); Assert.assertNotNull(renderer2.getBaseItemLabelGenerator()); Assert.assertEquals("1.2", renderer2.getBaseItemLabelGenerator().generateLabel(xyDataset, 0, 0)); Assert.assertTrue(renderer2.getBaseItemLabelsVisible()); chart = getChart("summary.chart16", 0); renderer1 = chart.getCategoryPlot().getRenderer(); Assert.assertNotNull(renderer1.getBaseItemLabelGenerator()); Assert.assertEquals("1.2", renderer1.getBaseItemLabelGenerator().generateLabel(categoryDataset, 0, 0)); Assert.assertTrue(renderer1.getBaseItemLabelsVisible()); }
From source file:org.openscience.cdk.applications.taverna.weka.regression.EvaluateRegressionResultsAsPDFActivity.java
@Override public void work() throws Exception { // Get input/*from www . ja v a 2s .c om*/ String[] options = ((String) this.getConfiguration() .getAdditionalProperty(CDKTavernaConstants.PROPERTY_SCATTER_PLOT_OPTIONS)).split(";"); List<File> modelFiles = this.getInputAsFileList(this.INPUT_PORTS[0]); List<Instances> trainDatasets = this.getInputAsList(this.INPUT_PORTS[1], Instances.class); List<Instances> testDatasets = null; if (options[0].equals("" + TEST_TRAININGSET_PORT)) { testDatasets = this.getInputAsList(this.INPUT_PORTS[2], Instances.class); } else { testDatasets = null; } String directory = modelFiles.get(0).getParent(); // Do work ArrayList<String> resultFiles = new ArrayList<String>(); HashMap<UUID, Double> orgClassMap = new HashMap<UUID, Double>(); HashMap<UUID, Double> calcClassMap = new HashMap<UUID, Double>(); WekaTools tools = new WekaTools(); ChartTool chartTool = new ChartTool(); List<Object> rmseCharts = new ArrayList<Object>(); List<Double> trainMeanRMSE = new ArrayList<Double>(); List<Double> testMeanRMSE = new ArrayList<Double>(); List<Double> cvMeanRMSE = new ArrayList<Double>(); DefaultCategoryDataset[] ratioRMSESet = new DefaultCategoryDataset[trainDatasets.size()]; for (int i = 0; i < trainDatasets.size(); i++) { ratioRMSESet[i] = new DefaultCategoryDataset(); } List<Double> trainingSetRatios = null; int fileIDX = 1; while (!modelFiles.isEmpty()) { trainingSetRatios = new ArrayList<Double>(); List<Double> trainRMSE = new ArrayList<Double>(); HashSet<Integer> trainSkippedRMSE = new HashSet<Integer>(); List<Double> testRMSE = new ArrayList<Double>(); HashSet<Integer> testSkippedRMSE = new HashSet<Integer>(); List<Double> cvRMSE = new ArrayList<Double>(); HashSet<Integer> cvSkippedRMSE = new HashSet<Integer>(); List<Object> chartsObjects = new LinkedList<Object>(); File modelFile = null; Classifier classifier = null; String name = ""; for (int j = 0; j < trainDatasets.size(); j++) { LinkedList<Double> predictedValues = new LinkedList<Double>(); LinkedList<Double> orgValues = new LinkedList<Double>(); LinkedList<Double[]> yResidueValues = new LinkedList<Double[]>(); LinkedList<String> yResidueNames = new LinkedList<String>(); if (modelFiles.isEmpty()) { break; } calcClassMap.clear(); modelFile = modelFiles.remove(0); classifier = (Classifier) SerializationHelper.read(modelFile.getPath()); Instances testset = null; if (testDatasets != null) { testset = testDatasets.get(j); } name = classifier.getClass().getSimpleName(); String sum = "Method: " + name + " " + tools.getOptionsFromFile(modelFile, name) + "\n\n"; // Produce training set data Instances trainset = trainDatasets.get(j); Instances trainUUIDSet = Filter.useFilter(trainset, tools.getIDGetter(trainset)); trainset = Filter.useFilter(trainset, tools.getIDRemover(trainset)); double trainingSetRatio = 1.0; if (testset != null) { trainingSetRatio = trainset.numInstances() / (double) (trainset.numInstances() + testset.numInstances()); } trainingSetRatios.add(trainingSetRatio * 100); // Predict for (int k = 0; k < trainset.numInstances(); k++) { UUID uuid = UUID.fromString(trainUUIDSet.instance(k).stringValue(0)); orgClassMap.put(uuid, trainset.instance(k).classValue()); calcClassMap.put(uuid, classifier.classifyInstance(trainset.instance(k))); } // Evaluate Evaluation trainEval = new Evaluation(trainset); trainEval.evaluateModel(classifier, trainset); // Chart data DefaultXYDataset xyDataSet = new DefaultXYDataset(); String trainSeries = "Training Set (RMSE: " + String.format("%.2f", trainEval.rootMeanSquaredError()) + ")"; XYSeries series = new XYSeries(trainSeries); Double[] yTrainResidues = new Double[trainUUIDSet.numInstances()]; Double[] orgTrain = new Double[trainUUIDSet.numInstances()]; Double[] calc = new Double[trainUUIDSet.numInstances()]; for (int k = 0; k < trainUUIDSet.numInstances(); k++) { UUID uuid = UUID.fromString(trainUUIDSet.instance(k).stringValue(0)); orgTrain[k] = orgClassMap.get(uuid); calc[k] = calcClassMap.get(uuid); if (calc[k] != null && orgTrain[k] != null) { series.add(orgTrain[k].doubleValue(), calc[k]); yTrainResidues[k] = calc[k].doubleValue() - orgTrain[k].doubleValue(); } else { ErrorLogger.getInstance().writeError("Can't find value for UUID: " + uuid.toString(), this.getActivityName()); throw new CDKTavernaException(this.getActivityName(), "Can't find value for UUID: " + uuid.toString()); } } orgValues.addAll(Arrays.asList(orgTrain)); predictedValues.addAll(Arrays.asList(calc)); CollectionUtilities.sortTwoArrays(orgTrain, yTrainResidues); yResidueValues.add(yTrainResidues); yResidueNames.add(trainSeries); xyDataSet.addSeries(trainSeries, series.toArray()); // Summary sum += "Training Set:\n"; if (trainEval.rootRelativeSquaredError() > 300) { trainSkippedRMSE.add(j); } trainRMSE.add(trainEval.rootMeanSquaredError()); sum += trainEval.toSummaryString(true); // Produce test set data if (testset != null) { Instances testUUIDSet = Filter.useFilter(testset, tools.getIDGetter(testset)); testset = Filter.useFilter(testset, tools.getIDRemover(testset)); // Predict for (int k = 0; k < testset.numInstances(); k++) { UUID uuid = UUID.fromString(testUUIDSet.instance(k).stringValue(0)); orgClassMap.put(uuid, testset.instance(k).classValue()); calcClassMap.put(uuid, classifier.classifyInstance(testset.instance(k))); } // Evaluate Evaluation testEval = new Evaluation(testset); testEval.evaluateModel(classifier, testset); // Chart data String testSeries = "Test Set (RMSE: " + String.format("%.2f", testEval.rootMeanSquaredError()) + ")"; series = new XYSeries(testSeries); Double[] yTestResidues = new Double[testUUIDSet.numInstances()]; Double[] orgTest = new Double[testUUIDSet.numInstances()]; calc = new Double[testUUIDSet.numInstances()]; for (int k = 0; k < testUUIDSet.numInstances(); k++) { UUID uuid = UUID.fromString(testUUIDSet.instance(k).stringValue(0)); orgTest[k] = orgClassMap.get(uuid); calc[k] = calcClassMap.get(uuid); if (calc[k] != null && orgTest[k] != null) { series.add(orgTest[k].doubleValue(), calc[k].doubleValue()); yTestResidues[k] = calc[k].doubleValue() - orgTest[k].doubleValue(); } else { ErrorLogger.getInstance().writeError("Can't find value for UUID: " + uuid.toString(), this.getActivityName()); throw new CDKTavernaException(this.getActivityName(), "Can't find value for UUID: " + uuid.toString()); } } orgValues.addAll(Arrays.asList(orgTest)); predictedValues.addAll(Arrays.asList(calc)); CollectionUtilities.sortTwoArrays(orgTest, yTestResidues); yResidueValues.add(yTestResidues); yResidueNames.add(testSeries); xyDataSet.addSeries(testSeries, series.toArray()); // Create summary sum += "\nTest Set:\n"; if (testEval.rootRelativeSquaredError() > 300) { testSkippedRMSE.add(j); } testRMSE.add(testEval.rootMeanSquaredError()); sum += testEval.toSummaryString(true); } // Produce cross validation data if (Boolean.parseBoolean(options[1])) { Evaluation cvEval = new Evaluation(trainset); if (testset != null) { Instances fullSet = tools.getFullSet(trainset, testset); cvEval.crossValidateModel(classifier, fullSet, 10, new Random(1)); } else { cvEval.crossValidateModel(classifier, trainset, 10, new Random(1)); } sum += "\n10-fold cross-validation:\n"; if (cvEval.rootRelativeSquaredError() > 300) { cvSkippedRMSE.add(j); } cvRMSE.add(cvEval.rootMeanSquaredError()); sum += cvEval.toSummaryString(true); } // Create scatter plot String header = classifier.getClass().getSimpleName() + "\n Training set ratio: " + String.format("%.2f", trainingSetRatios.get(j)) + "%" + "\n Model name: " + modelFile.getName(); chartsObjects .add(chartTool.createScatterPlot(xyDataSet, header, "Original values", "Predicted values")); // Create residue plot chartsObjects.add(chartTool.createResiduePlot(yResidueValues, header, "Index", "(Predicted - Original)", yResidueNames)); // Create curve Double[] tmpOrg = new Double[orgValues.size()]; tmpOrg = orgValues.toArray(tmpOrg); Double[] tmpPred = new Double[predictedValues.size()]; tmpPred = predictedValues.toArray(tmpPred); CollectionUtilities.sortTwoArrays(tmpOrg, tmpPred); DefaultXYDataset dataSet = new DefaultXYDataset(); String orgName = "Original"; XYSeries orgSeries = new XYSeries(orgName); String predName = "Predicted"; XYSeries predSeries = new XYSeries(predName); for (int k = 0; k < tmpOrg.length; k++) { orgSeries.add((k + 1), tmpOrg[k]); predSeries.add((k + 1), tmpPred[k]); } dataSet.addSeries(orgName, orgSeries.toArray()); dataSet.addSeries(predName, predSeries.toArray()); chartsObjects.add(chartTool.createXYLineChart(header, "Index", "Value", dataSet, true, false)); // Add summary chartsObjects.add(sum); } // Create RMSE Plot DefaultCategoryDataset dataSet = new DefaultCategoryDataset(); double meanRMSE = 0; for (int i = 0; i < trainRMSE.size(); i++) { if (!trainSkippedRMSE.contains(i)) { dataSet.addValue(trainRMSE.get(i), "Training Set", "(" + String.format("%.2f", trainingSetRatios.get(i)) + "%/" + (i + 1) + ")"); ratioRMSESet[i].addValue(trainRMSE.get(i), "Training Set", "(" + String.format("%.2f", trainingSetRatios.get(i)) + "%/" + (i + 1) + "/" + fileIDX + ")"); } meanRMSE += trainRMSE.get(i); } trainMeanRMSE.add(meanRMSE / trainRMSE.size()); meanRMSE = 0; if (!testRMSE.isEmpty()) { for (int i = 0; i < testRMSE.size(); i++) { if (!testSkippedRMSE.contains(i)) { dataSet.addValue(testRMSE.get(i), "Test Set", "(" + String.format("%.2f", trainingSetRatios.get(i)) + "%/" + (i + 1) + ")"); ratioRMSESet[i].addValue(testRMSE.get(i), "Test Set", "(" + String.format("%.2f", trainingSetRatios.get(i)) + "%/" + (i + 1) + "/" + fileIDX + ")"); } meanRMSE += testRMSE.get(i); } testMeanRMSE.add(meanRMSE / testRMSE.size()); } meanRMSE = 0; if (!cvRMSE.isEmpty()) { for (int i = 0; i < cvRMSE.size(); i++) { if (!cvSkippedRMSE.contains(i)) { dataSet.addValue(cvRMSE.get(i), "10-fold Cross-validation", "(" + String.format("%.2f", trainingSetRatios.get(i)) + "%/" + (i + 1) + ")"); ratioRMSESet[i].addValue(cvRMSE.get(i), "10-fold Cross-validation", "(" + String.format("%.2f", trainingSetRatios.get(i)) + "%/" + (i + 1) + "/" + fileIDX + ")"); } meanRMSE += cvRMSE.get(i); } cvMeanRMSE.add(meanRMSE / cvRMSE.size()); } JFreeChart rmseChart = chartTool.createLineChart( "RMSE Plot\n Classifier:" + name + " " + tools.getOptionsFromFile(modelFile, name), "(Training set ratio/Set Index/File index)", "RMSE", dataSet, false, true); chartsObjects.add(rmseChart); rmseCharts.add(rmseChart); // Write PDF File file = FileNameGenerator.getNewFile(directory, ".pdf", "ScatterPlot"); chartTool.writeChartAsPDF(file, chartsObjects); resultFiles.add(file.getPath()); fileIDX++; } // Create set ratio RMSE plots for (int i = 0; i < ratioRMSESet.length; i++) { JFreeChart rmseChart = chartTool .createLineChart( "Set RMSE plot\n" + "(" + String.format("%.2f", trainingSetRatios.get(i)) + "%/" + (i + 1) + ")", "(Training set ratio/Index)", "RMSE", ratioRMSESet[i], false, true); rmseCharts.add(rmseChart); } // Create mean RMSE plot DefaultCategoryDataset dataSet = new DefaultCategoryDataset(); for (int i = 0; i < trainMeanRMSE.size(); i++) { dataSet.addValue(trainMeanRMSE.get(i), "Training Set", "" + (i + 1)); } for (int i = 0; i < testMeanRMSE.size(); i++) { dataSet.addValue(testMeanRMSE.get(i), "Test Set", "" + (i + 1)); } for (int i = 0; i < cvMeanRMSE.size(); i++) { dataSet.addValue(cvMeanRMSE.get(i), "10-fold Cross-validation", "" + (i + 1)); } JFreeChart rmseChart = chartTool.createLineChart("RMSE Mean Plot", "Dataset number", "Mean RMSE", dataSet); rmseCharts.add(rmseChart); File file = FileNameGenerator.getNewFile(directory, ".pdf", "RMSE-Sum"); chartTool.writeChartAsPDF(file, rmseCharts); resultFiles.add(file.getPath()); // Set output this.setOutputAsStringList(resultFiles, this.OUTPUT_PORTS[0]); }
From source file:com.rapidminer.gui.plotter.charts.MultipleScatterPlotter.java
private void prepareData() { idMap.clear();// www. ja v a 2 s .c o m this.plotIndexToColumnIndexMap.clear(); dataSet = new DefaultXYDataset(); if (xAxis >= 0) { Map<String, List<double[]>> dataCollection = new LinkedHashMap<String, List<double[]>>(); Map<String, List<String>> idCollection = new LinkedHashMap<String, List<String>>(); synchronized (dataTable) { for (int column = 0; column < plotColumns.length; column++) { if (plotColumns[column]) { plotIndexToColumnIndexMap.add(column); String columnName = this.dataTable.getColumnName(column); Iterator<DataTableRow> i = this.dataTable.iterator(); int index = 0; while (i.hasNext()) { DataTableRow row = i.next(); double xValue = row.getValue(xAxis); double yValue = row.getValue(column); if (!Double.isNaN(xValue) && !Double.isNaN(yValue)) { addPoint(dataCollection, idCollection, row.getId(), xValue, yValue, columnName); } index++; } } } } double minX = Double.POSITIVE_INFINITY; double maxX = Double.NEGATIVE_INFINITY; double minY = Double.POSITIVE_INFINITY; double maxY = Double.NEGATIVE_INFINITY; Iterator<Map.Entry<String, List<double[]>>> i = dataCollection.entrySet().iterator(); while (i.hasNext()) { Map.Entry<String, List<double[]>> entry = i.next(); List<double[]> dataList = entry.getValue(); Iterator<double[]> j = dataList.iterator(); while (j.hasNext()) { double[] current = j.next(); minX = Math.min(minX, current[0]); maxX = Math.max(maxX, current[0]); minY = Math.min(minY, current[1]); maxY = Math.max(maxY, current[1]); } } Random jitterRandom = new Random(2001); double oldXRange = maxX - minX; double oldYRange = maxY - minY; if (Double.isInfinite(oldXRange) || Double.isNaN(oldXRange)) { oldXRange = 0; } if (Double.isInfinite(oldYRange) || Double.isNaN(oldYRange)) { oldYRange = 0; } i = dataCollection.entrySet().iterator(); while (i.hasNext()) { Map.Entry<String, List<double[]>> entry = i.next(); String seriesName = entry.getKey(); List<double[]> dataList = entry.getValue(); double[][] data = new double[2][dataList.size()]; int listCounter = 0; Iterator<double[]> j = dataList.iterator(); while (j.hasNext()) { double[] current = j.next(); data[0][listCounter] = current[0]; data[1][listCounter] = current[1]; if (this.jitterAmount > 0) { double pertX = oldXRange * (jitterAmount / 200.0d) * jitterRandom.nextGaussian(); double pertY = oldYRange * (jitterAmount / 200.0d) * jitterRandom.nextGaussian(); data[0][listCounter] += pertX; data[1][listCounter] += pertY; } listCounter++; } ((DefaultXYDataset) dataSet).addSeries(seriesName, data); } int seriesCounter = 0; Iterator<List<String>> v = idCollection.values().iterator(); while (v.hasNext()) { List<String> idList = v.next(); int itemCounter = 0; Iterator<String> j = idList.iterator(); while (j.hasNext()) { idMap.put(new SeriesAndItem(seriesCounter, itemCounter++), j.next()); } seriesCounter++; } } }
From source file:uk.ac.leeds.ccg.andyt.projects.moses.process.RegressionReport.java
public static JFreeChart getYEqualsXLineChart(double[][] data, String xAxisLabel_String, String yAxisLabel_String) { JFreeChart a_XYLineChart = null;// w w w.j av a 2 s . c o m String title = null; boolean legend = false; boolean tooltips = false; boolean urls = false; double[][] lineChartData = new double[2][2]; lineChartData[0][0] = Double.MAX_VALUE;// min_CASObservedData; lineChartData[0][1] = Double.MIN_VALUE;// max_CASObservedData; lineChartData[1][0] = Double.MAX_VALUE;// min_SARExpectedData; lineChartData[1][1] = Double.MIN_VALUE;// max_SARExpectedData; for (int j = 0; j < data[0].length; j++) { lineChartData[0][0] = Math.min(lineChartData[0][0], data[0][j]); lineChartData[0][1] = Math.max(lineChartData[0][1], data[0][j]); lineChartData[1][0] = Math.min(lineChartData[1][0], data[1][j]); lineChartData[1][1] = Math.max(lineChartData[1][1], data[1][j]); } lineChartData[1][0] = lineChartData[0][0]; lineChartData[0][1] = Math.min(lineChartData[1][1], lineChartData[0][1]); lineChartData[1][1] = lineChartData[0][1]; System.out.println("min lineChartData[0][0] " + lineChartData[0][0]); System.out.println("max lineChartData[0][1] " + lineChartData[0][1]); System.out.println("min lineChartData[1][0] " + lineChartData[1][0]); System.out.println("max lineChartData[1][1] " + lineChartData[1][1]); DefaultXYDataset a_DefaultXYDataset = new DefaultXYDataset(); a_DefaultXYDataset.addSeries("y = x", lineChartData); a_XYLineChart = ChartFactory.createXYLineChart(title, xAxisLabel_String, yAxisLabel_String, a_DefaultXYDataset, PlotOrientation.HORIZONTAL, legend, tooltips, urls); return a_XYLineChart; }
From source file:delphsim.model.Resultado.java
/** * Mtodo para construir una grfica de tipo <CODE>JFreeChart</CODE> con * los valores de este resultado y sus funciones y obtener como resultado * el panel de tipo <CODE>ChartPanel</CODE> que la contiene. * @return Un panel <CODE>ChartPanel</CODE> con la nueva grfica. *//*from w ww . ja v a 2 s . co m*/ public ChartPanel construirPanelResultado() { DefaultXYDataset data = new DefaultXYDataset(); for (int i = 0; i < this.getNumFunciones(); i++) { String nombre = this.funciones[i].getNombre(); double[][] puntos = new double[2][this.puntosTiempo.size()]; for (int j = 0; j < this.puntosTiempo.size(); j++) { puntos[0][j] = Double.valueOf(this.puntosTiempo.get(j).toString()); puntos[1][j] = this.funciones[i].getPunto(j); } data.addSeries(nombre, puntos); } JFreeChart chart = ChartFactory.createXYLineChart(this.getTitulo(), // ttulo laaargo this.getXLabel(), // xLabel this.getYLabel(), // yLabel data, // datos PlotOrientation.VERTICAL, true, // legenda true, // tooltips false // URLs ); for (int i = 0; i < this.getNumFunciones(); i++) { chart.getXYPlot().getRenderer().setSeriesStroke(i, new BasicStroke(this.funciones[i].getGrosor())); chart.getXYPlot().getRenderer().setSeriesPaint(i, this.funciones[i].getColor()); } ChartPanel panel = new ChartPanel(chart, // grfica true, // propiedades false, // guardar false, // imprimir true, // zoom true // tooltips ); this.grafica = chart; return panel; }
From source file:edu.fullerton.timeseriesapp.TimeSeriesApp.java
public ArrayList<Integer> makePlot(ArrayList<ChanDataBuffer> dbufs, boolean compact) throws WebUtilException { int imageId;//from w ww . j av a 2 s . c o m try { PluginSupport psupport = new PluginSupport(); String gtitle = psupport.getTitle(dbufs, compact); String xAxisLabel = ""; XYSeriesCollection xyds = new XYSeriesCollection(); TimeSeriesCollection mtds = new TimeSeriesCollection(); compact = dbufs.size() > 2 ? false : compact; for (ChanDataBuffer dbuf : dbufs) { int npts = dbuf.getDataLength(); int sum = 1; if (npts > 2000) { sum = npts / 2000; } String legend = psupport.getLegend(dbuf, compact); if (timeAxis.equalsIgnoreCase("utc")) { TimeSeries ts = psupport.getTimeSeries(dbuf, legend, sum); xAxisLabel = "Time (UTC)"; mtds.addSeries(ts); } else { boolean isDt = timeAxis.equalsIgnoreCase("dt"); XYSeries xys = psupport.addXySeries(dbuf, legend, isDt, sum); xAxisLabel = psupport.getxAxisLabel(); xyds.addSeries(xys); } } Double minx, miny, maxx, maxy; Double[] rng = new Double[4]; if (timeAxis.equalsIgnoreCase("utc")) { PluginSupport.getRangeLimits(mtds, rng); } else { int skip = 0; PluginSupport.getRangeLimits(xyds, rng, skip); } minx = rng[0]; miny = rng[1]; maxx = rng[2]; maxy = rng[3]; int exp; if (timeAxis.equalsIgnoreCase("utc")) { exp = PluginSupport.scaleRange(mtds, miny, maxy); } else { exp = PluginSupport.scaleRange(xyds, miny, maxy); } ChartPanel cpnl; DefaultXYDataset ds = new DefaultXYDataset(); JFreeChart chart; if (timeAxis.equalsIgnoreCase("utc")) { chart = ChartFactory.createTimeSeriesChart(gtitle, "Time (UTC)", "Counts", ds, true, true, false); } else { chart = ChartFactory.createXYLineChart(gtitle, xAxisLabel, "Counts", ds, PlotOrientation.VERTICAL, true, false, false); } chart.setBackgroundPaint(Color.WHITE); chart.setAntiAlias(true); XYPlot plot = (XYPlot) chart.getPlot(); plot.setBackgroundPaint(Color.white); plot.setRangeGridlinePaint(Color.LIGHT_GRAY); plot.setDomainGridlinePaint(Color.LIGHT_GRAY); NumberAxis rangeAxis = new NumberAxis("Counts"); ScaledAxisNumberFormat sanf = new ScaledAxisNumberFormat(); sanf.setExp(exp); NumberTickUnit tickUnit; double plotRange; if (maxy != 0 && Math.abs(maxy - miny) < Math.abs(maxy) * 1e-30) { // this garbage is to get jFreeChart to always put labels on the Y axis double dt = Math.abs(miny) / 10; double scaledMin = (miny - dt) * Math.pow(10., exp); double scaledMax = (maxy + dt) * Math.pow(10., exp); rangeAxis.setRange(scaledMin, scaledMax); plotRange = scaledMax - scaledMin; rangeAxis.setAutoRange(false); } else { sanf.setMinMax(miny, maxy); plotRange = maxy - miny; rangeAxis.setAutoRange(true); } tickUnit = rangeAxis.getTickUnit(); double tickSize = tickUnit.getSize(); int nticks = (int) ((plotRange) / tickSize); if (nticks > yTicks) { double newTickSize = plotRange / yTicks; rangeAxis.setTickUnit(new NumberTickUnit(newTickSize)); } rangeAxis.setNumberFormatOverride(sanf); rangeAxis.setAutoRangeIncludesZero(false); plot.setRangeAxis(rangeAxis); if (timeAxis.equalsIgnoreCase("utc")) { plot.setDataset(0, mtds); } else { plot.setDataset(0, xyds); } // Set the line thickness XYLineAndShapeRenderer r = (XYLineAndShapeRenderer) plot.getRenderer(); BasicStroke str = new BasicStroke(lineThickness); int n = plot.getSeriesCount(); for (int i = 0; i < n; i++) { r.setSeriesStroke(i, str); } if (compact) { chart.removeLegend(); } cpnl = new ChartPanel(chart); if (outFilename.isEmpty()) { imageId = psupport.saveImageAsPNG(cpnl); } else { imageId = 0; psupport.saveImageAsPdfFile(chart, outFilename); } } catch (SQLException | NoSuchAlgorithmException | IOException ex) { throw new WebUtilException(ex); } ArrayList<Integer> ret = new ArrayList<>(); ret.add(imageId); return ret; }
From source file:be.nbb.demetra.dfm.output.simulation.RMSEGraphView.java
private void toDataset(DfmSimulation dfmSimulation) { DefaultXYDataset dfmDataset = new DefaultXYDataset(); DefaultXYDataset arimaDataset = new DefaultXYDataset(); DefaultXYDataset stdevDataset = new DefaultXYDataset(); Objects.requireNonNull(dfmSimulation); int selectedIndex = comboBox.getSelectedIndex(); DfmSimulationResults dfm = dfmSimulation.getDfmResults().get(selectedIndex); DfmSimulationResults arima = dfmSimulation.getArimaResults().get(selectedIndex); List<Double> trueValues = dfm.getTrueValues(); horizons = dfm.getForecastHorizons(); periods = dfm.getEvaluationSample(); // Remove periods of evaluation sample not in true values domain filteredPeriods = filterEvaluationSample(trueValues); if (filterPanel == null) { filterPanel = new FilterEvaluationSamplePanel(filteredPeriods); }//from w ww .j a v a 2s . c om Double[][] dfmFcts = dfm.getForecastsArray(); Double[][] arimaFcts = arima.getForecastsArray(); Map<Integer, TsData> dfmTs = new HashMap<>(); Map<Integer, TsData> arimaTs = new HashMap<>(); TsFrequency freq = periods.get(0).getFrequency(); TsDataCollector coll = new TsDataCollector(); for (int i = 0; i < periods.size(); i++) { if (trueValues.get(i) != null) { coll.addObservation(periods.get(i).middle(), trueValues.get(i)); } else { coll.addMissingValue(periods.get(i).middle()); } } TsData trueTsData = coll.make(freq, TsAggregationType.None); fillMap(dfmTs, dfmFcts, freq); fillMap(arimaTs, arimaFcts, freq); int size = dfmTs.size(); xvalues = new double[size]; dfmValues = new double[size]; arimaValues = new double[size]; TsPeriod start = filteredPeriods.get(filterPanel.getStart()); TsPeriod end = filteredPeriods.get(filterPanel.getEnd()); TsDomain dom = new TsDomain(start, end.minus(start) + 1); int index = 0; for (Integer horizon : horizons) { if (dfmTs.containsKey(horizon)) { ForecastEvaluationResults rslt = new ForecastEvaluationResults(dfmTs.get(horizon).fittoDomain(dom), arimaTs.get(horizon).fittoDomain(dom), trueTsData); dfmValues[index] = rslt.calcRMSE(); arimaValues[index] = rslt.calcRMSE_Benchmark(); xvalues[index] = horizon; index++; } } dfmDataset.addSeries("RMSE (simulation based rec. est.)", new double[][] { xvalues, dfmValues }); arimaDataset.addSeries("RMSE (Arima recursive est.)", new double[][] { xvalues, arimaValues }); // Stdev Map<Day, SimulationResultsDocument> results = dfmSimulation.getResults(); Day[] cal = new Day[results.size()]; cal = results.keySet().toArray(cal); Arrays.sort(cal); TsPeriod lastPeriod = filteredPeriods.get(filterPanel.getEnd()); xStdev = new ArrayList<>(); yStdev = new ArrayList<>(); DfmSeriesDescriptor selected = (DfmSeriesDescriptor) comboBox.getSelectedItem(); List<DfmSeriesDescriptor> descs = dfmSimulation.getDescriptions(); int realIndex = 0; boolean found = false; while (!found) { if (selected.description.equals(descs.get(realIndex).description)) { found = true; } else { realIndex++; } } for (Day d : cal) { int horizon = d.difference(lastPeriod.lastday()); if (dfmTs.containsKey(horizon)) { TsData[] smoothStdev = results.get(d).getSmoothedSeriesStdev(); if (smoothStdev != null) { TsData stdevs = results.get(d).getSmoothedSeriesStdev()[selectedIndex]; if (!stdevs.getFrequency().equals(lastPeriod.getFrequency())) { stdevs = stdevs.changeFrequency(lastPeriod.getFrequency(), TsAggregationType.Last, true); } Double stdev = stdevs.get(lastPeriod); xStdev.add(horizon); yStdev.add(stdev); } } } double[] xStdevArray = new double[xStdev.size()]; double[] yStdevArray = new double[xStdev.size()]; for (int i = 0; i < xStdevArray.length; i++) { xStdevArray[i] = xStdev.get(i); yStdevArray[i] = yStdev.get(i); } stdevDataset.addSeries("Stdev", new double[][] { xStdevArray, yStdevArray }); XYPlot plot = chartPanel.getChart().getXYPlot(); plot.setDataset(DFM_INDEX, dfmDataset); plot.setDataset(ARIMA_INDEX, arimaDataset); plot.setDataset(STDEV_INDEX, stdevDataset); chartPanel.getChart() .setTitle("Evaluation sample from " + filteredPeriods.get(filterPanel.getStart()).toString() + " to " + filteredPeriods.get(filterPanel.getEnd()).toString()); }
From source file:com.rapidminer.gui.plotter.charts.Abstract2DChartPlotter.java
private void prepareNominalData() { this.nominal = true; dataSet = new DefaultXYDataset(); if (axis[X_AXIS] >= 0 && axis[Y_AXIS] >= 0) { Map<String, List<double[]>> dataCollection = new LinkedHashMap<String, List<double[]>>(); Map<String, List<String>> idCollection = new LinkedHashMap<String, List<String>>(); synchronized (dataTable) { if (colorColumn >= 0) { for (int v = 0; v < dataTable.getNumberOfValues(colorColumn); v++) { dataCollection.put(dataTable.mapIndex(colorColumn, v), new LinkedList<double[]>()); idCollection.put(dataTable.mapIndex(colorColumn, v), new LinkedList<String>()); }/*from ww w .jav a 2 s . co m*/ } Iterator<DataTableRow> i = this.dataTable.iterator(); int index = 0; while (i.hasNext()) { DataTableRow row = i.next(); double xValue = row.getValue(axis[X_AXIS]); double yValue = row.getValue(axis[Y_AXIS]); double colorValue = Double.NaN; if (colorColumn >= 0) { colorValue = row.getValue(colorColumn); } // TM: removed check // if (!Double.isNaN(xValue) && !Double.isNaN(yValue)) { addPoint(dataCollection, idCollection, row.getId(), xValue, yValue, colorValue); // } index++; } } double minX = Double.POSITIVE_INFINITY; double maxX = Double.NEGATIVE_INFINITY; double minY = Double.POSITIVE_INFINITY; double maxY = Double.NEGATIVE_INFINITY; Iterator<Map.Entry<String, List<double[]>>> i = dataCollection.entrySet().iterator(); while (i.hasNext()) { Map.Entry<String, List<double[]>> entry = i.next(); List<double[]> dataList = entry.getValue(); Iterator<double[]> j = dataList.iterator(); while (j.hasNext()) { double[] current = j.next(); minX = MathFunctions.robustMin(minX, current[X_AXIS]); maxX = MathFunctions.robustMax(maxX, current[X_AXIS]); minY = MathFunctions.robustMin(minY, current[Y_AXIS]); maxY = MathFunctions.robustMax(maxY, current[Y_AXIS]); } } Random jitterRandom = new Random(2001); double oldXRange = maxX - minX; double oldYRange = maxY - minY; if (Double.isInfinite(oldXRange) || Double.isNaN(oldXRange)) { oldXRange = 0; } if (Double.isInfinite(oldYRange) || Double.isNaN(oldYRange)) { oldYRange = 0; } i = dataCollection.entrySet().iterator(); while (i.hasNext()) { Map.Entry<String, List<double[]>> entry = i.next(); String seriesName = entry.getKey(); List<double[]> dataList = entry.getValue(); double[][] data = new double[2][dataList.size()]; int listCounter = 0; Iterator<double[]> j = dataList.iterator(); while (j.hasNext()) { double[] current = j.next(); data[X_AXIS][listCounter] = current[X_AXIS]; data[Y_AXIS][listCounter] = current[Y_AXIS]; if (this.jitterAmount > 0) { double pertX = oldXRange * (jitterAmount / 200.0d) * jitterRandom.nextGaussian(); double pertY = oldYRange * (jitterAmount / 200.0d) * jitterRandom.nextGaussian(); data[X_AXIS][listCounter] += pertX; data[Y_AXIS][listCounter] += pertY; } listCounter++; } ((DefaultXYDataset) dataSet).addSeries(seriesName, data); } int seriesCounter = 0; Iterator<List<String>> v = idCollection.values().iterator(); while (v.hasNext()) { List<String> idList = v.next(); int itemCounter = 0; Iterator<String> j = idList.iterator(); while (j.hasNext()) { idMap.put(new SeriesAndItem(seriesCounter, itemCounter++), j.next()); } seriesCounter++; } } }
From source file:rod_design_compute.ShowPanel.java
private void chartPoint() { DefaultXYDataset dataset1 = new DefaultXYDataset(); DefaultXYDataset dataset2 = new DefaultXYDataset(); DefaultXYDataset dataset3 = new DefaultXYDataset(); DefaultXYDataset dataset4 = new DefaultXYDataset(); DefaultXYDataset dataset5 = new DefaultXYDataset(); DefaultXYDataset dataset6 = new DefaultXYDataset(); DefaultXYDataset dataset7 = new DefaultXYDataset(); DefaultXYDataset dataset8 = new DefaultXYDataset(); Point indicator = null;/*from www . j a va 2s.c om*/ chooseRodGroup = parent.arrayRodGroup.get(chooseIndex); int amount; if (parent.upperLimit == -1) amount = parent.resolution; else amount = parent.upperLimit; double[][][] data = new double[8][2][amount]; for (int i = 0; i < amount; i++) { for (int j = 0; j < 8; j++) data[j][0][i] = i; if (chooseRodGroup.getType() == RodGroup.SR) { if (choosePoint == ((SR) (chooseRodGroup)).getPointA()) indicator = ((SR) (parent.arrayRecord.get(i).get(chooseIndex))).getPointA(); else if (choosePoint == ((SR) (chooseRodGroup)).getPointB()) indicator = ((SR) (parent.arrayRecord.get(i).get(chooseIndex))).getPointB(); else if (((SR) (chooseRodGroup)).flag == true) { if (choosePoint == ((SR) (chooseRodGroup)).getPointE()) indicator = ((SR) (parent.arrayRecord.get(i).get(chooseIndex))).getPointE(); } } else if (chooseRodGroup.getType() == RodGroup.RRR) { if (choosePoint == ((RRR) (chooseRodGroup)).getPointB()) indicator = ((RRR) (parent.arrayRecord.get(i).get(chooseIndex))).getPointB(); else if (choosePoint == ((RRR) (chooseRodGroup)).getPointC()) indicator = ((RRR) (parent.arrayRecord.get(i).get(chooseIndex))).getPointC(); else if (choosePoint == ((RRR) (chooseRodGroup)).getPointD()) indicator = ((RRR) (parent.arrayRecord.get(i).get(chooseIndex))).getPointD(); else if (((RRR) (chooseRodGroup)).flag2 == true || ((RRR) (chooseRodGroup)).flag3 == true) { if (choosePoint == ((RRR) (chooseRodGroup)).getPointE()) indicator = ((RRR) (parent.arrayRecord.get(i).get(chooseIndex))).getPointE(); } } else if (chooseRodGroup.getType() == RodGroup.RRP) { if (choosePoint == ((RRP) (chooseRodGroup)).getPointB()) indicator = ((RRP) (parent.arrayRecord.get(i).get(chooseIndex))).getPointB(); else if (choosePoint == ((RRP) (chooseRodGroup)).getPointC()) indicator = ((RRP) (parent.arrayRecord.get(i).get(chooseIndex))).getPointC(); } getPointData(data, indicator, i); } dataset1.addSeries("Vx", data[0]); dataset2.addSeries("Vy", data[1]); dataset3.addSeries("V", data[2]); dataset4.addSeries("ax", data[3]); dataset5.addSeries("ay", data[4]); dataset6.addSeries("a", data[5]); dataset7.addSeries("X", data[6]); dataset8.addSeries("Y", data[7]); JFreeChart chart1 = ChartFactory.createXYLineChart("Vx", "angle()", "Vx", dataset1, PlotOrientation.VERTICAL, false, false, false); JFreeChart chart2 = ChartFactory.createXYLineChart("Vy", "angle()", "Vy", dataset2, PlotOrientation.VERTICAL, false, false, false); JFreeChart chart3 = ChartFactory.createXYLineChart("V", "angle()", "V", dataset3, PlotOrientation.VERTICAL, false, false, false); JFreeChart chart4 = ChartFactory.createXYLineChart("ax", "angle()", "ax", dataset4, PlotOrientation.VERTICAL, false, false, false); JFreeChart chart5 = ChartFactory.createXYLineChart("ay", "angle()", "ay", dataset5, PlotOrientation.VERTICAL, false, false, false); JFreeChart chart6 = ChartFactory.createXYLineChart("a", "angle()", "a", dataset6, PlotOrientation.VERTICAL, false, false, false); JFreeChart chart7 = ChartFactory.createXYLineChart("X", "angle()", "X", dataset7, PlotOrientation.VERTICAL, false, false, false); JFreeChart chart8 = ChartFactory.createXYLineChart("Y", "angle()", "Y", dataset8, PlotOrientation.VERTICAL, false, false, false); ChartPanel panel1 = new ChartPanel(chart1); ChartPanel panel2 = new ChartPanel(chart2); ChartPanel panel3 = new ChartPanel(chart3); ChartPanel panel4 = new ChartPanel(chart4); ChartPanel panel5 = new ChartPanel(chart5); ChartPanel panel6 = new ChartPanel(chart6); ChartPanel panel7 = new ChartPanel(chart7); ChartPanel panel8 = new ChartPanel(chart8); JFrame frame = new JFrame("Chart"); frame.setLayout(new GridLayout(3, 3, 0, 0)); frame.add(panel1); frame.add(panel2); frame.add(panel3); frame.add(panel4); frame.add(panel5); frame.add(panel6); frame.add(panel7); frame.add(panel8); frame.pack(); frame.setVisible(true); choosePoint = null; }
From source file:analysis.postRun.PostRunWindow.java
/** Method which creates and returns a graph in a chartpanel. * //from www .j a va2 s.co m * @param dSeries * Which dataSeries to make a graph of. * title * Title for the graph. * xTitle * Title for the x axis. * yTitle * Title for the y axis. * legend * Whether or not to include a legend - true if multiple series are to be shown. */ private ChartPanel getSChart(double[][][] dSeries, double[][][] err, String title, String xTitle, String yTitle, Boolean legend, Boolean percentage) { int seriesNum = dSeries.length; DefaultXYDataset temp = new DefaultXYDataset(); for (int j = 0; j < seriesNum; j++) { temp.addSeries(j, dSeries[j]); } JFreeChart chart = ChartFactory.createXYLineChart(title, xTitle, yTitle, temp, PlotOrientation.VERTICAL, legend, true, false); if (percentage) { chart.getXYPlot().getRangeAxis().setRange(0.0, 100.0); } for (int i = 0; i < seriesNum; i++) { plotErrorBars(chart, dSeries[i], err[i]); } if (save) { try { //System.out.println("Saving charts."); ChartUtilities.saveChartAsPNG( new File(currFile.substring(0, currFile.length() - 4) + title + "Chart"), chart, 1200, 800); } catch (IOException e) { System.err.println(e.getMessage()); //e.printStackTrace(); } } return new ChartPanel(chart); }