List of usage examples for org.jfree.data.xy XYDataset getYValue
public double getYValue(int series, int item);
From source file:ChartUsingJava.CombinedXYPlotDemo1.java
/** * Creates an overlaid chart.//from w w w .j a v a 2 s. c om * * @return The chart. */ private static JFreeChart createCombinedChart() { // create plot ... IntervalXYDataset data1 = createDataset1(); XYItemRenderer renderer1 = new XYLineAndShapeRenderer(true, false); renderer1.setBaseToolTipGenerator( new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT, new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00"))); renderer1.setSeriesStroke(0, new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL)); renderer1.setSeriesPaint(0, Color.blue); DateAxis domainAxis = new DateAxis("Year"); domainAxis.setLowerMargin(0.0); domainAxis.setUpperMargin(0.02); ValueAxis rangeAxis = new NumberAxis("$billion"); XYPlot plot1 = new XYPlot(data1, null, rangeAxis, renderer1); plot1.setBackgroundPaint(Color.lightGray); plot1.setDomainGridlinePaint(Color.white); plot1.setRangeGridlinePaint(Color.white); // add a second dataset and renderer... IntervalXYDataset data2 = createDataset2(); XYBarRenderer renderer2 = new XYBarRenderer() { public Paint getItemPaint(int series, int item) { XYDataset dataset = getPlot().getDataset(); if (dataset.getYValue(series, item) >= 0.0) { return Color.red; } else { return Color.green; } } }; renderer2.setSeriesPaint(0, Color.red); renderer2.setDrawBarOutline(false); renderer2.setBaseToolTipGenerator( new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT, new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00"))); XYPlot plot2 = new XYPlot(data2, null, new NumberAxis("$billion"), renderer2); plot2.setBackgroundPaint(Color.lightGray); plot2.setDomainGridlinePaint(Color.white); plot2.setRangeGridlinePaint(Color.white); CombinedXYPlot cplot = new CombinedXYPlot(domainAxis, rangeAxis); cplot.add(plot1, 3); cplot.add(plot2, 2); cplot.setGap(8.0); cplot.setDomainGridlinePaint(Color.white); cplot.setDomainGridlinesVisible(true); // return a new chart containing the overlaid plot... JFreeChart chart = new JFreeChart("CombinedXYPlotDemo1", JFreeChart.DEFAULT_TITLE_FONT, cplot, false); chart.setBackgroundPaint(Color.white); LegendTitle legend = new LegendTitle(cplot); chart.addSubtitle(legend); return chart; }
From source file:com.newatlanta.bluedragon.XYItemLabelGenerator.java
private static double calculateYTotal(XYDataset dataset, int series) { double total = 0; int numItems = dataset.getItemCount(series); for (int i = 0; i < numItems; i++) total += dataset.getYValue(series, i); return total; }
From source file:org.fhcrc.cpl.viewer.gui.SpectrumChartFactory.java
protected static XYPlot createXYPlot(XYDataset dataset, Color[] colors) { // break up into two datasets, one for bars one for lines //LinkedList lines =new LinkedList(); //LinkedList bars = new LinkedList(); XYDataset seriesLines = new XYSeriesCollection(); XYDataset seriesBars = new XYSeriesCollection(); ((XYSeriesCollection) seriesBars).setIntervalWidth(0.0); if (dataset instanceof XYSeriesCollection) { while (0 < dataset.getSeriesCount()) { XYSeries s = ((XYSeriesCollection) dataset).getSeries(0); ((XYSeriesCollection) dataset).removeSeries(0); Comparable key = s.getKey(); boolean lines = false; if (key instanceof String) lines = ((String) key).startsWith("-"); if (lines) ((XYSeriesCollection) seriesLines).addSeries(s); else/*from w w w.j a v a 2s. co m*/ ((XYSeriesCollection) seriesBars).addSeries(s); } } else { seriesBars = dataset; } NumberAxis axisDomain = new NumberAxis(); axisDomain.setAutoRange(true); axisDomain.setAutoRangeIncludesZero(false); // axisDomain.setRange(400.0, 1600.0); // NOTE: zooming in too far kills the chart, prevent this axisDomain.addChangeListener(new AxisChangeListener() { public void axisChanged(AxisChangeEvent event) { NumberAxis axis = (NumberAxis) event.getSource(); Range range = axis.getRange(); if (range.getLength() < 2.0) { //_log.info("AxisChangeListener " + range.getLength() + " " + range.toString()); double middle = range.getLowerBound() + range.getLength() / 2.0; axis.setRange(new Range(middle - 1.1, middle + 1.1)); } } }); NumberAxis axisRange = new NumberAxis(); axisRange.setAutoRange(true); axisRange.setAutoRangeIncludesZero(true); XYToolTipGenerator toolTipGenerator = new XYToolTipGenerator() { public String generateToolTip(XYDataset xyDataset, int s, int i) { double X = Math.round(xyDataset.getXValue(s, i) * 1000.0) / 1000.0; double Y = Math.round(xyDataset.getYValue(s, i) * 1000.0) / 1000.0; return "(" + X + ", " + Y + ")"; } }; XYBarRenderer barRenderer = new XYBarRenderer(); //dhmay adding 2009/09/14. As of jfree 1.0.13, shadows on by default barRenderer.setShadowVisible(false); //dhmay adding for jfreechart 1.0.6 upgrade. If this isn't here, we get a //nullPointerException in XYBarRenderer.drawItemLabel barRenderer.setBaseItemLabelGenerator(new NullLabelGenerator()); barRenderer.setSeriesItemLabelsVisible(0, true); barRenderer.setBaseToolTipGenerator(toolTipGenerator); XYLineAndShapeRenderer lineRenderer = new XYLineAndShapeRenderer(); lineRenderer.setBaseToolTipGenerator(toolTipGenerator); XYPlot xy = new XYPlot(null, axisDomain, axisRange, null); int ds = 0; if (seriesLines.getSeriesCount() > 0) { xy.setDataset(ds, seriesLines); xy.setRenderer(ds, lineRenderer); xy.mapDatasetToRangeAxis(ds, 0); ds++; for (int i = 0; i < seriesLines.getSeriesCount(); i++) { Comparable key = ((XYSeriesCollection) seriesLines).getSeriesKey(i); boolean lines = false; if (key instanceof String) lines = ((String) key).startsWith("-"); lineRenderer.setSeriesLinesVisible(i, lines); lineRenderer.setSeriesShapesVisible(i, !lines); } } if (seriesBars.getSeriesCount() > 0) { xy.setDataset(ds, seriesBars); xy.setRenderer(ds, barRenderer); xy.mapDatasetToRangeAxis(ds, 0); ds++; } setColors(xy, colors); return xy; }
From source file:net.sf.maltcms.common.charts.api.overlay.AbstractChartOverlay.java
/** * * @param entity/*from w w w . j a v a 2 s . c o m*/ * @param chartPanel * @param dataset * @param seriesIndex * @param itemIndex * @return */ public static Shape toView(Shape entity, ChartPanel chartPanel, Dataset dataset, int seriesIndex, int itemIndex) { if (dataset instanceof XYDataset) { XYDataset xyds = (XYDataset) dataset; double x1 = xyds.getXValue(seriesIndex, itemIndex); double y1 = xyds.getYValue(seriesIndex, itemIndex); AffineTransform toPosition = getModelToViewTransformXY(chartPanel, x1, y1); toPosition.concatenate( getTranslateInstance(-entity.getBounds2D().getCenterX(), -entity.getBounds2D().getCenterY())); return toPosition.createTransformedShape(entity); } else if (dataset instanceof CategoryDataset) { CategoryDataset cds = (CategoryDataset) dataset; double y1 = cds.getValue(seriesIndex, itemIndex).doubleValue(); AffineTransform toPosition = getModelToViewTransformCategory(chartPanel, itemIndex, y1); toPosition.concatenate( getTranslateInstance(-entity.getBounds2D().getCenterX(), -entity.getBounds2D().getCenterY())); return toPosition.createTransformedShape(entity); } throw new IllegalArgumentException("Unsupported dataset type: " + dataset.getClass()); }
From source file:org.jfree.data.statistics.Regression.java
/** * Returns the parameters 'a' and 'b' for an equation y = a + bx, fitted to * the data using ordinary least squares regression. The result is returned * as a double[], where result[0] --> a, and result[1] --> b. * * @param data the data.//www . j av a 2 s . c o m * @param series the series (zero-based index). * * @return The parameters. */ public static double[] getOLSRegression(XYDataset data, int series) { int n = data.getItemCount(series); if (n < 2) { throw new IllegalArgumentException("Not enough data."); } double sumX = 0; double sumY = 0; double sumXX = 0; double sumXY = 0; for (int i = 0; i < n; i++) { double x = data.getXValue(series, i); double y = data.getYValue(series, i); sumX += x; sumY += y; double xx = x * x; sumXX += xx; double xy = x * y; sumXY += xy; } double sxx = sumXX - (sumX * sumX) / n; double sxy = sumXY - (sumX * sumY) / n; double xbar = sumX / n; double ybar = sumY / n; double[] result = new double[2]; result[1] = sxy / sxx; result[0] = ybar - result[1] * xbar; return result; }
From source file:org.jfree.data.statistics.Regression.java
/** * Returns the parameters 'a' and 'b' for an equation y = ax^b, fitted to * the data using a power regression equation. The result is returned as * an array, where double[0] --> a, and double[1] --> b. * * @param data the data.// www . j a va2 s. c o m * @param series the series to fit the regression line against. * * @return The parameters. */ public static double[] getPowerRegression(XYDataset data, int series) { int n = data.getItemCount(series); if (n < 2) { throw new IllegalArgumentException("Not enough data."); } double sumX = 0; double sumY = 0; double sumXX = 0; double sumXY = 0; for (int i = 0; i < n; i++) { double x = Math.log(data.getXValue(series, i)); double y = Math.log(data.getYValue(series, i)); sumX += x; sumY += y; double xx = x * x; sumXX += xx; double xy = x * y; sumXY += xy; } double sxx = sumXX - (sumX * sumX) / n; double sxy = sumXY - (sumX * sumY) / n; double xbar = sumX / n; double ybar = sumY / n; double[] result = new double[2]; result[1] = sxy / sxx; result[0] = Math.pow(Math.exp(1.0), ybar - result[1] * xbar); return result; }
From source file:de.mpg.mpi_inf.bioinf.netanalyzer.ui.charts.JFreeChartConn.java
private static double logLowerBound(XYDataset aDataset, boolean isDomainAxis) { double lowerBound = 0.0; for (int i = 0; i < aDataset.getItemCount(0); i++) { double tmp = isDomainAxis ? aDataset.getXValue(0, i) : aDataset.getYValue(0, i); if (lowerBound == 0.0 || tmp < lowerBound) lowerBound = tmp;/* ww w . j a v a 2 s . c o m*/ } return lowerBound; }
From source file:org.jfree.data.statistics.Regression.java
/** * Returns the parameters 'a0', 'a1', 'a2', ..., 'an' for a polynomial * function of order n, y = a0 + a1 * x + a2 * x^2 + ... + an * x^n, * fitted to the data using a polynomial regression equation. * The result is returned as an array with a length of n + 2, * where double[0] --> a0, double[1] --> a1, .., double[n] --> an. * and double[n + 1] is the correlation coefficient R2 * Reference: J. D. Faires, R. L. Burden, Numerische Methoden (german * edition), pp. 243ff and 327ff./* w w w . j a v a 2 s. c o m*/ * * @param dataset the dataset (<code>null</code> not permitted). * @param series the series to fit the regression line against (the series * must have at least order + 1 non-NaN items). * @param order the order of the function (> 0). * * @return The parameters. * * @since 1.0.14 */ public static double[] getPolynomialRegression(XYDataset dataset, int series, int order) { ParamChecks.nullNotPermitted(dataset, "dataset"); int itemCount = dataset.getItemCount(series); if (itemCount < order + 1) { throw new IllegalArgumentException("Not enough data."); } int validItems = 0; double[][] data = new double[2][itemCount]; for (int item = 0; item < itemCount; item++) { double x = dataset.getXValue(series, item); double y = dataset.getYValue(series, item); if (!Double.isNaN(x) && !Double.isNaN(y)) { data[0][validItems] = x; data[1][validItems] = y; validItems++; } } if (validItems < order + 1) { throw new IllegalArgumentException("Not enough data."); } int equations = order + 1; int coefficients = order + 2; double[] result = new double[equations + 1]; double[][] matrix = new double[equations][coefficients]; double sumX = 0.0; double sumY = 0.0; for (int item = 0; item < validItems; item++) { sumX += data[0][item]; sumY += data[1][item]; for (int eq = 0; eq < equations; eq++) { for (int coe = 0; coe < coefficients - 1; coe++) { matrix[eq][coe] += Math.pow(data[0][item], eq + coe); } matrix[eq][coefficients - 1] += data[1][item] * Math.pow(data[0][item], eq); } } double[][] subMatrix = calculateSubMatrix(matrix); for (int eq = 1; eq < equations; eq++) { matrix[eq][0] = 0; for (int coe = 1; coe < coefficients; coe++) { matrix[eq][coe] = subMatrix[eq - 1][coe - 1]; } } for (int eq = equations - 1; eq > -1; eq--) { double value = matrix[eq][coefficients - 1]; for (int coe = eq; coe < coefficients - 1; coe++) { value -= matrix[eq][coe] * result[coe]; } result[eq] = value / matrix[eq][eq]; } double meanY = sumY / validItems; double yObsSquare = 0.0; double yRegSquare = 0.0; for (int item = 0; item < validItems; item++) { double yCalc = 0; for (int eq = 0; eq < equations; eq++) { yCalc += result[eq] * Math.pow(data[0][item], eq); } yRegSquare += Math.pow(yCalc - meanY, 2); yObsSquare += Math.pow(data[1][item] - meanY, 2); } double rSquare = yRegSquare / yObsSquare; result[equations] = rSquare; return result; }
From source file:de.mpg.mpi_inf.bioinf.netanalyzer.ui.charts.JFreeChartConn.java
/** * Extracts the visualized data from a given chart instance. * <p>//from ww w. java2s .c om * This methods extracts the default data series from the default dataset of the given chart. * </p> * * @param aChart * Chart to extract the data from. * @return Visualized data in the form of an array of points. */ public static Point2D.Double[] extractData(JFreeChart aChart) { XYDataset dataColl = aChart.getXYPlot().getDataset(); final int n = dataColl.getItemCount(0); Point2D.Double[] dataPoints = new Point2D.Double[n]; for (int i = 0; i < n; ++i) { dataPoints[i] = new Point2D.Double(dataColl.getXValue(0, i), dataColl.getYValue(0, i)); } return dataPoints; }
From source file:net.sf.mzmine.chartbasics.HistogramChartFactory.java
/** * Performs Gaussian fit on XYSeries//from w w w . j a v a2 s.c o m * * @param data the data * @param series the series index * @param gMin lower bound of Gaussian fit * @param gMax upper bound of Gaussian fit * @param sigDigits number of significant digits * @return double[] {normFactor, mean, sigma} as a result of * GaussianCurveFitter.create().fit(obs.toList()) */ public static double[] gaussianFit(XYDataset data, int series, double gMin, double gMax) { // gaussian fit WeightedObservedPoints obs = new WeightedObservedPoints(); for (int i = 0; i < data.getItemCount(series); i++) { double x = data.getXValue(series, i); if (x >= gMin && x <= gMax) obs.add(x, data.getYValue(series, i)); } return fitter.fit(obs.toList()); }