List of usage examples for org.jfree.data.xy XYDataItem getY
public Number getY()
From source file:statistic.graph.gui.Charts.java
private static void initXAxis(XYPlot plot, XYDataset dataset) { plot.setDomainAxis(new NumberAxis(plot.getDomainAxis().getLabel())); XYSeriesCollection collection = (XYSeriesCollection) dataset; double max = Double.NEGATIVE_INFINITY; double min = Double.POSITIVE_INFINITY; if (collection != null) { for (int s = 0; s < collection.getSeriesCount(); s++) { for (int d = 0; d < collection.getItemCount(s); d++) { XYDataItem data = collection.getSeries(s).getDataItem(d); if (data.getX().longValue() == Integer.MAX_VALUE || data.getX().longValue() == Integer.MIN_VALUE) { continue; }/* ww w .java 2s . co m*/ if (data.getX().doubleValue() > max) { max = data.getX().doubleValue(); } if (data.getX().doubleValue() < min) { min = data.getX().doubleValue(); } } } if (min < max) { plot.getDomainAxis().setStandardTickUnits(NumberAxis.createIntegerTickUnits()); plot.getDomainAxis().setRange(min - 0.5, max + 0.5); for (int s = 0; s < collection.getSeriesCount(); s++) { XYSeries series = collection.getSeries(s); if (series.indexOf(Integer.MIN_VALUE) >= 0) { XYDataItem item = series.remove((Number) Integer.MIN_VALUE); if (series.indexOf(min) < 0) { series.add(min, item.getY()); } } if (series.indexOf(Integer.MAX_VALUE) >= 0) { XYDataItem item = series.remove((Number) Integer.MAX_VALUE); if (series.indexOf(max) < 0) { series.add(max, item.getY()); } } } } else { plot.getDomainAxis().setStandardTickUnits(NumberAxis.createIntegerTickUnits()); plot.getDomainAxis().setRange(0 - 0.5, 1 + 0.5); } } else { plot.getDomainAxis().setStandardTickUnits(NumberAxis.createIntegerTickUnits()); plot.getDomainAxis().setRange(0 - 0.5, 1 + 0.5); } }
From source file:org.fhcrc.cpl.viewer.mrm.Utils.java
public static double getWeightedAverageDaughtersTime(XYSeriesCollection daughterSet) { double retVal = 0.0; double yTot = 0.0; double xWeight = 0.0; for (Object xyso : daughterSet.getSeries()) { XYSeries xys = (XYSeries) xyso;//from w ww . j a v a 2s. c o m for (Object xydio : xys.getItems()) { XYDataItem xydi = (XYDataItem) xydio; xWeight += (xydi.getX().doubleValue() * xydi.getY().doubleValue()); yTot += xydi.getY().doubleValue(); } } if (yTot > 0) retVal = xWeight / yTot; return retVal; }
From source file:com.googlecode.psiprobe.beans.stats.providers.AbstractSeriesProvider.java
protected XYSeries toSeries(String legend, List stats) { XYSeries xySeries = new XYSeries(legend, true, false); synchronized (stats) { for (int i = 0; i < stats.size(); i++) { XYDataItem item = (XYDataItem) stats.get(i); xySeries.addOrUpdate(item.getX(), item.getY()); }// ww w . j a va 2 s .c o m } return xySeries; }
From source file:sim.portrayal.inspector.TimeSeriesChartingPropertyInspector.java
protected void updateSeries(double time, double lastTime) { double d = 0; GlobalAttributes globalAttributes = getGlobalAttributes(); // FIRST, load the aggregate series with the items aggregateSeries.add(time, d = valueFor(properties.getValue(index)), false); int len = aggregateSeries.getItemCount(); // SECOND, determine if it's time to dump stuff into the main series long interval = globalAttributes.interval; double intervalMark = time % interval; if (!/* w ww . j av a 2 s . c o m*/ // I think these are the three cases for when we may need to update because // we've exceeded the next interval (intervalMark == 0 || (time - lastTime >= interval) || lastTime % interval > intervalMark)) return; // not yet // THIRD determine how and when to dump stuff into the main series double y = 0; // make compiler happy double temp; switch (globalAttributes.aggregationMethod) { case AGGREGATIONMETHOD_CURRENT: // in this case the aggregateSeries is sort of worthless addToMainSeries(time, d, false); break; case AGGREGATIONMETHOD_MAX: double maxX = 0; for (int i = 0; i < len; i++) { XYDataItem item = (XYDataItem) (aggregateSeries.getDataItem(i)); y = item.getY().doubleValue(); temp = item.getX().doubleValue(); if (maxX < temp || i == 0) maxX = temp; } addToMainSeries(maxX, y, false); break; case AGGREGATIONMETHOD_MIN: double minX = 0; for (int i = 0; i < len; i++) { XYDataItem item = (XYDataItem) (aggregateSeries.getDataItem(i)); y = item.getY().doubleValue(); temp = item.getX().doubleValue(); if (minX > temp || i == 0) minX = temp; } addToMainSeries(minX, y, false); break; case AGGREGATIONMETHOD_MEAN: double sumX = 0; int n = 0; for (int i = 0; i < len; i++) { XYDataItem item = (XYDataItem) (aggregateSeries.getDataItem(i)); y = item.getY().doubleValue(); sumX += item.getX().doubleValue(); n++; } if (n == 0) { // no element -- do nothing } else addToMainSeries(sumX / n, y, false); break; default: throw new RuntimeException("No valid aggregation method provided"); } aggregateSeries.clear(); }
From source file:com.googlecode.psiprobe.model.stats.StatsCollection.java
public long getLastValueForStat(String statName) { long statValue = 0; List stats = getStats(statName); if (stats != null && !stats.isEmpty()) { XYDataItem xy = (XYDataItem) stats.get(stats.size() - 1); if (xy != null && xy.getY() != null) { statValue = xy.getY().longValue(); }//from ww w . j a va 2s . c om } return statValue; }
From source file:psiprobe.model.stats.StatsCollection.java
/** * Gets the last value for stat./*from ww w . j av a2 s . com*/ * * @param statName the stat name * @return the last value for stat */ public long getLastValueForStat(String statName) { long statValue = 0; List<XYDataItem> stats = getStats(statName); if (stats != null && !stats.isEmpty()) { XYDataItem xy = stats.get(stats.size() - 1); if (xy != null && xy.getY() != null) { statValue = xy.getY().longValue(); } } return statValue; }
From source file:com.github.dougkelly88.FLIMPlateReaderGUI.FLIMClasses.Classes.FindMaxpoint.java
public void acqMaxpointData() { ArrayList<Integer> signal = new ArrayList<Integer>(); ArrayList<Integer> delays = new ArrayList<Integer>(); // instrument interacting fn, currently dummy // REMEMBER TO APPLY THRESHOLD // plot maxpoint data findMaxpointData_ = createDummyMaxpointData(0); XYPlot plot = chart_.getXYPlot();//from ww w . j a v a 2 s .c om plot.setDataset(0, findMaxpointData_); // assign maxpoint - easier when this is real data... ArrayList<XYDataItem> dummy = new ArrayList<XYDataItem>( ((XYSeriesCollection) findMaxpointData_).getSeries(0).getItems()); for (XYDataItem dummy1 : dummy) { delays.add((Integer) dummy1.getX().intValue()); signal.add((Integer) dummy1.getY().intValue()); } int[] res = findMaxIndex(signal); maxpointDelay_ = delays.get(res[0]); // estimate lifetime signal = new ArrayList<Integer>(signal.subList(res[0], signal.size())); delays = new ArrayList<Integer>(delays.subList(res[0], delays.size())); double sumt2 = 0; double sumt = 0; double sumtlnI = 0; double sumlnI = 0; for (int i = 0; i < signal.size(); i++) { sumt2 = sumt2 + delays.get(i) * delays.get(i); sumt = sumt + delays.get(i); sumlnI = (sumlnI + log((double) signal.get(i))); sumtlnI = sumtlnI + log((double) signal.get(i)) * delays.get(i); } lifetime_ = -(delays.size() * sumt2 - sumt * sumt) / (delays.size() * sumtlnI - sumt * sumlnI); }
From source file:org.fhcrc.cpl.toolbox.gui.chart.PanelWithScatterPlot.java
/** * This method only does anything if there's exactly one series in the dataset. * * Performs linear regression, and then plots a regression line, from the * minimum to the maximum X value of the series. * * Removes the old series, adds this new one, and then adds the old one again, * so the regression line will appear on top. */// ww w.j av a2 s .com public double[] addRegressionLine(int seriesIndex, boolean robustRegression) { if (dataset == null || dataset.getSeriesCount() < seriesIndex + 1) return null; XYSeries series = dataset.getSeries(seriesIndex); int n = series.getItemCount(); double[] xValues = new double[n]; double[] yValues = new double[n]; double maxX = Double.MIN_VALUE; double minX = Double.MAX_VALUE; for (int i = 0; i < n; i++) { XYDataItem dataItem = series.getDataItem(i); xValues[i] = dataItem.getX().doubleValue(); yValues[i] = dataItem.getY().doubleValue(); if (xValues[i] > maxX) maxX = xValues[i]; if (xValues[i] < minX) minX = xValues[i]; } _log.debug("addRegressionLine, minX = " + minX + ", maxX = " + maxX); RegressionUtilities.robustRegression(xValues, yValues); double[] regressionCoefficients = null; if (robustRegression) regressionCoefficients = RegressionUtilities.robustRegression(xValues, yValues); else regressionCoefficients = MatrixUtil.linearRegression(xValues, yValues); _log.debug("addRegressionLine, coeffs = " + regressionCoefficients[0] + ", " + regressionCoefficients[1]); addLine(regressionCoefficients[1], regressionCoefficients[0], minX, maxX); return regressionCoefficients; }
From source file:org.owasp.benchmark.score.report.ScatterHome.java
private JFreeChart display(String title, int height, Set<Report> toolResults) { JFrame f = new JFrame(title); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //averages/*from w ww. j a v a2s .c om*/ ArrayList<Double> averageCommercialFalseRates = new ArrayList<Double>(); ArrayList<Double> averageCommercialTrueRates = new ArrayList<Double>(); XYSeriesCollection dataset = new XYSeriesCollection(); XYSeries series = new XYSeries("Scores"); for (Report toolReport : toolResults) { if (!toolReport.isCommercial()) { OverallResults overallResults = toolReport.getOverallResults(); series.add(overallResults.getFalsePositiveRate() * 100, overallResults.getTruePositiveRate() * 100); if (toolReport.isCommercial()) { averageCommercialFalseRates.add(overallResults.getFalsePositiveRate()); averageCommercialTrueRates.add(overallResults.getTruePositiveRate()); } } } int commercialToolCount = 0; for (Report toolReport : toolResults) { if (toolReport.isCommercial()) { commercialToolCount++; OverallResults overallResults = toolReport.getOverallResults(); if (!BenchmarkScore.showAveOnlyMode) { series.add(overallResults.getFalsePositiveRate() * 100, overallResults.getTruePositiveRate() * 100); } if (toolReport.isCommercial()) { averageCommercialFalseRates.add(overallResults.getFalsePositiveRate()); averageCommercialTrueRates.add(overallResults.getTruePositiveRate()); } } } for (double d : averageCommercialFalseRates) { afr += d; } afr = afr / averageCommercialFalseRates.size(); for (double d : averageCommercialTrueRates) { atr += d; } atr = atr / averageCommercialTrueRates.size(); if (commercialToolCount > 1 || (BenchmarkScore.showAveOnlyMode && commercialToolCount == 1)) { series.add(afr * 100, atr * 100); } dataset.addSeries(series); chart = ChartFactory.createScatterPlot(title, "False Positive Rate", "True Positive Rate", dataset, PlotOrientation.VERTICAL, true, true, false); theme.apply(chart); XYPlot xyplot = chart.getXYPlot(); initializePlot(xyplot); makeDataLabels(toolResults, xyplot); makeLegend(toolResults, 103, 100.5, dataset, xyplot); for (XYDataItem item : (List<XYDataItem>) series.getItems()) { double x = item.getX().doubleValue(); double y = item.getY().doubleValue(); double z = (x + y) / 2; XYLineAnnotation score = new XYLineAnnotation(x, y, z, z, dashed, Color.blue); xyplot.addAnnotation(score); } ChartPanel cp = new ChartPanel(chart, height, height, 400, 400, 1200, 1200, false, false, false, false, false, false); f.add(cp); f.pack(); f.setLocationRelativeTo(null); // f.setVisible(true); return chart; }
From source file:org.owasp.benchmark.score.report.ScatterScores.java
private JFreeChart display(String title, int height, int width, List<Report> toolResults) { JFrame f = new JFrame(title); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); XYSeriesCollection dataset = new XYSeriesCollection(); XYSeries series = new XYSeries("Scores"); for (int i = 0; i < toolResults.size(); i++) { Report toolReport = toolResults.get(i); OverallResults overallResults = toolReport.getOverallResults(); series.add(overallResults.getFalsePositiveRate() * 100, overallResults.getTruePositiveRate() * 100); }//from w w w .j a v a2 s. co m dataset.addSeries(series); chart = ChartFactory.createScatterPlot(title, "False Positive Rate", "True Positive Rate", dataset, PlotOrientation.VERTICAL, true, true, false); String fontName = "Arial"; DecimalFormat pctFormat = new DecimalFormat("0'%'"); theme = (StandardChartTheme) org.jfree.chart.StandardChartTheme.createJFreeTheme(); theme.setExtraLargeFont(new Font(fontName, Font.PLAIN, 24)); // title theme.setLargeFont(new Font(fontName, Font.PLAIN, 20)); // axis-title theme.setRegularFont(new Font(fontName, Font.PLAIN, 16)); theme.setSmallFont(new Font(fontName, Font.PLAIN, 12)); theme.setRangeGridlinePaint(Color.decode("#C0C0C0")); theme.setPlotBackgroundPaint(Color.white); theme.setChartBackgroundPaint(Color.white); theme.setGridBandPaint(Color.red); theme.setAxisOffset(new RectangleInsets(0, 0, 0, 0)); theme.setBarPainter(new StandardBarPainter()); theme.setAxisLabelPaint(Color.decode("#666666")); theme.apply(chart); XYPlot xyplot = chart.getXYPlot(); NumberAxis rangeAxis = (NumberAxis) xyplot.getRangeAxis(); NumberAxis domainAxis = (NumberAxis) xyplot.getDomainAxis(); xyplot.setOutlineVisible(true); rangeAxis.setRange(-5, 109.99); rangeAxis.setNumberFormatOverride(pctFormat); rangeAxis.setTickLabelPaint(Color.decode("#666666")); rangeAxis.setMinorTickCount(5); rangeAxis.setTickUnit(new NumberTickUnit(10)); rangeAxis.setAxisLineVisible(true); rangeAxis.setMinorTickMarksVisible(true); rangeAxis.setTickMarksVisible(true); rangeAxis.setLowerMargin(10); rangeAxis.setUpperMargin(10); xyplot.setRangeGridlineStroke(new BasicStroke()); xyplot.setRangeGridlinePaint(Color.lightGray); xyplot.setRangeMinorGridlinePaint(Color.decode("#DDDDDD")); xyplot.setRangeMinorGridlinesVisible(true); domainAxis.setRange(-5, 105); domainAxis.setNumberFormatOverride(pctFormat); domainAxis.setTickLabelPaint(Color.decode("#666666")); domainAxis.setMinorTickCount(5); domainAxis.setTickUnit(new NumberTickUnit(10)); domainAxis.setAxisLineVisible(true); domainAxis.setTickMarksVisible(true); domainAxis.setMinorTickMarksVisible(true); domainAxis.setLowerMargin(10); domainAxis.setUpperMargin(10); xyplot.setDomainGridlineStroke(new BasicStroke()); xyplot.setDomainGridlinePaint(Color.lightGray); xyplot.setDomainMinorGridlinePaint(Color.decode("#DDDDDD")); xyplot.setDomainMinorGridlinesVisible(true); chart.setTextAntiAlias(true); chart.setAntiAlias(true); chart.removeLegend(); chart.setPadding(new RectangleInsets(20, 20, 20, 20)); xyplot.getRenderer().setSeriesPaint(0, Color.decode("#4572a7")); // // setup item labels // XYItemRenderer renderer = xyplot.getRenderer(); // Shape circle = new Ellipse2D.Float(-2.0f, -2.0f, 7.0f, 7.0f); // for ( int i = 0; i < dataset.getSeriesCount(); i++ ) { // renderer.setSeriesShape(i, circle); // renderer.setSeriesPaint(i, Color.blue); // String label = ""+((String)dataset.getSeries(i).getKey()); // int idx = label.indexOf( ':'); // label = label.substring( 0, idx ); // StandardXYItemLabelGenerator generator = new StandardXYItemLabelGenerator(label); // renderer.setSeriesItemLabelGenerator(i, generator); // renderer.setSeriesItemLabelsVisible(i, true); // ItemLabelPosition position = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER ); // renderer.setSeriesPositiveItemLabelPosition(i, position); // } makeDataLabels(toolResults, xyplot); makeLegend(toolResults, 57, 48, dataset, xyplot); Stroke dashed = new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0, new float[] { 6, 3 }, 0); for (XYDataItem item : (List<XYDataItem>) series.getItems()) { double x = item.getX().doubleValue(); double y = item.getY().doubleValue(); double z = (x + y) / 2; XYLineAnnotation score = new XYLineAnnotation(x, y, z, z, dashed, Color.blue); xyplot.addAnnotation(score); } // // put legend inside plot // LegendTitle lt = new LegendTitle(xyplot); // lt.setItemFont(theme.getSmallFont()); // lt.setPosition(RectangleEdge.RIGHT); // lt.setItemFont(theme.getSmallFont()); // XYTitleAnnotation ta = new XYTitleAnnotation(.7, .55, lt, RectangleAnchor.TOP_LEFT); // ta.setMaxWidth(0.48); // xyplot.addAnnotation(ta); // draw guessing line XYLineAnnotation guessing = new XYLineAnnotation(-5, -5, 105, 105, dashed, Color.red); xyplot.addAnnotation(guessing); XYPointerAnnotation worse = makePointer(75, 5, "Worse than guessing", TextAnchor.TOP_CENTER, 90); xyplot.addAnnotation(worse); XYPointerAnnotation better = makePointer(25, 100, "Better than guessing", TextAnchor.BOTTOM_CENTER, 270); xyplot.addAnnotation(better); XYTextAnnotation stroketext = new XYTextAnnotation(" Random Guess", 88, 107); stroketext.setTextAnchor(TextAnchor.CENTER_RIGHT); stroketext.setBackgroundPaint(Color.white); stroketext.setPaint(Color.red); stroketext.setFont(theme.getRegularFont()); xyplot.addAnnotation(stroketext); XYLineAnnotation strokekey = new XYLineAnnotation(58, 107, 68, 107, dashed, Color.red); xyplot.setBackgroundPaint(Color.white); xyplot.addAnnotation(strokekey); ChartPanel cp = new ChartPanel(chart, height, width, 400, 400, 1200, 1200, false, false, false, false, false, false); f.add(cp); f.pack(); f.setLocationRelativeTo(null); // f.setVisible(true); return chart; }