Example usage for org.jfree.chart.plot XYPlot getDataset

List of usage examples for org.jfree.chart.plot XYPlot getDataset

Introduction

In this page you can find the example usage for org.jfree.chart.plot XYPlot getDataset.

Prototype

public XYDataset getDataset(int index) 

Source Link

Document

Returns the dataset with the specified index, or null if there is no dataset with that index.

Usage

From source file:org.openfaces.component.chart.impl.renderers.XYLineFillRenderer.java

public LegendItem getLegendItem(int dataSetIndex, int series) {
    XYPlot plot = getPlot();
    if (plot == null) {
        return null;
    }//www  . j  a v  a 2 s.c o  m

    LegendItem legendItem = null;
    XYDataset dataSet = plot.getDataset(dataSetIndex);
    if (dataSet != null) {
        if (getItemVisible(series, 0)) {
            legendItem = createLegendItem(dataSetIndex, series, dataSet);
        }
    }

    return legendItem;

}

From source file:com.vgi.mafscaling.VECalc.java

private boolean plotCorrectionData() {
    plot3d.removeAllPlots();/*from   w  w  w  .  j  a v a 2  s  .  c om*/
    XYSeries series;
    XYPlot plot = chartPanel.getChart().getXYPlot();
    XYSeriesCollection lineDataset = (XYSeriesCollection) plot.getDataset(0);
    DecimalFormat df = new DecimalFormat(".00");
    String val;
    int i = 0;
    int j = 0;
    if (!Utils.isTableEmpty(corrTable)) {
        try {
            for (i = 1; i < corrTable.getColumnCount(); ++i) {
                val = corrTable.getValueAt(0, i).toString();
                series = new XYSeries(df.format(Double.valueOf(val)));
                for (j = 1; j < corrTable.getRowCount(); ++j) {
                    if (corrTable.getValueAt(j, i) != null) {
                        val = corrTable.getValueAt(j, i).toString();
                        if (!val.isEmpty())
                            series.add(Double.valueOf(corrTable.getValueAt(j, 0).toString()),
                                    Double.valueOf(val));
                    }
                }
                if (series.getItemCount() > 0) {
                    corrData.add(series);
                    series.setDescription(series.getKey().toString());
                    lineDataset.addSeries(series);
                }
            }
            plot.getDomainAxis(0).setAutoRange(true);
            plot.getRangeAxis(0).setAutoRange(true);
            plot.getDomainAxis(0).setLabel(xAxisName);
            plot.getRangeAxis(0).setLabel(yAxisName);
            plot.getRenderer(0).setSeriesVisible(0, false);

            double[] x = new double[xAxisArray.size()];
            for (i = 0; i < xAxisArray.size(); ++i)
                x[i] = xAxisArray.get(i);
            double[] y = new double[yAxisArray.size()];
            for (i = 0; i < yAxisArray.size(); ++i)
                y[i] = yAxisArray.get(i);
            double[][] z = Utils.doubleZArray(corrTable, x, y);
            Color[][] colors = Utils.generateTableColorMatrix(corrTable, 1, 1);
            plot3d.addGridPlot("Average Error % Plot", colors, x, y, z);
        } catch (NumberFormatException e) {
            logger.error(e);
            JOptionPane.showMessageDialog(null,
                    "Error parsing number from " + corrTableName + " table, cell(" + i + " : " + j + "): " + e,
                    "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }
    return true;
}

From source file:org.griphyn.vdl.karajan.monitor.monitors.swing.GraphPanel.java

protected void removeSeries(JFreeChart chart, int seriesIndex) {
    Color color = (Color) chart.getPlot().getLegendItems().get(seriesIndex).getLinePaint();
    palette.release(color);/*from w  ww .  jav  a 2  s  .com*/
    String key = enabled.remove(seriesIndex);
    XYPlot plot = chart.getXYPlot();
    Series<?> series = sampler.getSeries(key);
    Unit unit = series.getUnit();

    Integer datasetIndex = datasetMapping.get(unit);
    TimeSeriesCollection col = (TimeSeriesCollection) plot.getDataset(datasetIndex);

    List<String> colIndices = seriesMapping.get(unit);
    int colIndex = colIndices.indexOf(key);
    colIndices.remove(key);

    col.removeSeries(colIndex);
    if (col.getSeriesCount() == 0) {
        plot.setDataset(datasetIndex, null);
        plot.setRangeAxis(datasetIndex, null);
        seriesMapping.remove(unit);
        datasetMapping.remove(unit);
    }

    rebuildLegend();
    repaint();
    gp.saveLayout();
}

From source file:org.yccheok.jstock.gui.charting.ChartLayerUI.java

private Point2D.Double getPoint(int plotIndex, int seriesIndex, int dataIndex) {
    final TimeSeries timeSeries = this.getTimeSeries(plotIndex, seriesIndex);
    if (timeSeries == null) {
        // Possible this is candlestick?
        final XYPlot plot = this.chartJDialog.getPlot(plotIndex);
        if (plot.getDataset(seriesIndex) instanceof org.jfree.data.xy.DefaultHighLowDataset) {
            return this._getPointForCandlestick(plotIndex, seriesIndex, dataIndex);
        }//from  ww w . j  a va2 s.co  m
        return null;
    }

    if (dataIndex >= timeSeries.getItemCount()) {
        /* Not ready yet. */
        return null;
    }

    final ChartPanel chartPanel = this.chartJDialog.getChartPanel();
    final XYPlot plot = this.chartJDialog.getPlot(plotIndex);
    final ValueAxis domainAxis = plot.getDomainAxis();
    final RectangleEdge domainAxisEdge = plot.getDomainAxisEdge();
    final ValueAxis rangeAxis = plot.getRangeAxis();
    final RectangleEdge rangeAxisEdge = plot.getRangeAxisEdge();

    final TimeSeriesDataItem timeSeriesDataItem = timeSeries.getDataItem(dataIndex);
    final double xValue = timeSeriesDataItem.getPeriod().getFirstMillisecond();
    final double yValue = timeSeriesDataItem.getValue().doubleValue();
    final Rectangle2D plotArea = chartPanel.getChartRenderingInfo().getPlotInfo().getSubplotInfo(plotIndex)
            .getDataArea();
    final double xJava2D = domainAxis.valueToJava2D(xValue, plotArea, domainAxisEdge);
    final double yJava2D = rangeAxis.valueToJava2D(yValue, plotArea, rangeAxisEdge);
    // Use Double version, to avoid from losing precision.
    return new Point2D.Double(xJava2D, yJava2D);
}

From source file:org.griphyn.vdl.karajan.monitor.monitors.swing.GraphPanel.java

private String getTooltipText(double x) {
    StringBuilder sb = new StringBuilder();
    sb.append("<html><b>Date:</b> ");
    sb.append(DATE.format(new Date((long) x)));
    sb.append("<br>");
    sb.append("<b>Time:</b>s ");
    sb.append(TIME.format(new Date((long) x)));
    sb.append("<br>");

    XYPlot plot = chart.getXYPlot();

    for (int i = 0; i < enabled.size(); i++) {
        String key = enabled.get(i);
        Unit unit = sampler.getSeries(key).getUnit();
        int di = getDatasetIndex(unit);
        int si = getSeriesIndex(unit, key);
        Color color = (Color) chart.getXYPlot().getRenderer(di).getSeriesPaint(si);

        double val = binSearch(plot.getDataset(di), si, x);
        sb.append("<b style='color: ");
        sb.append(colorToHTML(color));//  w ww. j av  a 2  s  .c om
        sb.append("'>");
        sb.append(sampler.getSeries(key).getLabel());
        sb.append(":</b> ");
        sb.append(unit.format(val));
        sb.append("<br>");
    }
    sb.append("</html>");
    return sb.toString();
}

From source file:edu.dlnu.liuwenpeng.render.NewXYBarRenderer.java

/**    
* Returns a default legend item for the specified series.  Subclasses     
* should override this method to generate customised items.    
*    //from  www  .  j a  v a  2  s .com
* @param datasetIndex  the dataset index (zero-based).    
* @param series  the series index (zero-based).    
*    
* @return A legend item for the series.    
*/
public LegendItem getLegendItem(int datasetIndex, int series) {
    LegendItem result = null;
    XYPlot xyplot = getPlot();
    if (xyplot != null) {
        XYDataset dataset = xyplot.getDataset(datasetIndex);
        if (dataset != null) {
            XYSeriesLabelGenerator lg = getLegendItemLabelGenerator();
            String label = lg.generateLabel(dataset, series);
            String description = label;
            String toolTipText = null;
            if (getLegendItemToolTipGenerator() != null) {
                toolTipText = getLegendItemToolTipGenerator().generateLabel(dataset, series);
            }
            String urlText = null;
            if (getLegendItemURLGenerator() != null) {
                urlText = getLegendItemURLGenerator().generateLabel(dataset, series);
            }
            Shape shape = this.legendBar;
            Paint paint = lookupSeriesPaint(series);
            Paint outlinePaint = lookupSeriesOutlinePaint(series);
            Stroke outlineStroke = lookupSeriesOutlineStroke(series);
            if (this.drawBarOutline) {
                result = new LegendItem(label, description, toolTipText, urlText, shape, paint, outlineStroke,
                        outlinePaint);
            } else {
                result = new LegendItem(label, description, toolTipText, urlText, shape, paint);
            }
            result.setDataset(dataset);
            result.setDatasetIndex(datasetIndex);
            result.setSeriesKey(dataset.getSeriesKey(series));
            result.setSeriesIndex(series);
            if (getGradientPaintTransformer() != null) {
                result.setFillPaintTransformer(getGradientPaintTransformer());
            }
        }
    }
    return result;
}

From source file:org.moeaframework.analysis.plot.Plot.java

/**
 * Creates a new area plot series.  The data will be stacked with
 * any preceding calls to {@code stacked}.  The series is added to the given
 * dataset, or if {@code null} a new dataset is created.
 * //from  ww w. j a  v a2  s  .  com
 * @param label the label for the series
 * @param x the x values
 * @param y the y values
 * @param dataset the dataset, or {@code null} if a new dataset should be
 *        created
 * @return a reference to this {@code Plot} instance
 */
private Plot stacked(String label, List<? extends Number> x, List<? extends Number> y,
        DefaultTableXYDataset dataset) {
    if (dataset == null) {
        createXYPlot();

        XYPlot plot = chart.getXYPlot();

        if (plot.getDataset(currentDataset) instanceof DefaultTableXYDataset) {
            dataset = (DefaultTableXYDataset) plot.getDataset(currentDataset);
        } else {
            currentDataset++;
            dataset = new DefaultTableXYDataset();
        }
    }

    // generate the dataset
    XYSeries series = new XYSeries(label, true, false);

    for (int i = 0; i < x.size(); i++) {
        series.add(x.get(i), y.get(i));
    }

    dataset.addSeries(series);

    // add the dataset to the plot
    XYPlot plot = chart.getXYPlot();
    plot.setDataset(currentDataset, dataset);

    // setup the renderer
    Paint paint = paintHelper.get(dataset.getSeriesKey(0));
    StackedXYAreaRenderer renderer = new StackedXYAreaRenderer();
    renderer.setAutoPopulateSeriesStroke(false);

    renderer.setBaseStroke(new BasicStroke(3f, 1, 1));
    renderer.setBasePaint(paint);
    renderer.setBaseFillPaint(paint);

    plot.setRenderer(currentDataset, renderer);

    return this;
}

From source file:org.moeaframework.analysis.plot.Plot.java

/**
 * Modifies the paint (e.g,. color) of each series in the last dataset.
 * If the dataset contains more series than the number of arguments, the
 * arguments are reused as needed.//from   w w w  . jav  a2  s. c  o  m
 * 
 * @param paint one or more paint instances
 * @return a reference to this {@code Plot} instance
 */
public Plot withPaint(Paint... paint) {
    if (chart.getPlot() instanceof XYPlot) {
        XYPlot plot = chart.getXYPlot();
        XYDataset dataset = plot.getDataset(currentDataset);
        XYItemRenderer renderer = plot.getRenderer(currentDataset);

        for (int i = 0; i < dataset.getSeriesCount(); i++) {
            Paint p = paint[i % paint.length];

            paintHelper.set(dataset.getSeriesKey(i), p);
            renderer.setSeriesPaint(i, p);

            if (renderer instanceof XYLineAndShapeRenderer) {
                ((XYLineAndShapeRenderer) renderer).setSeriesFillPaint(i, p);
            }
        }
    } else if (chart.getPlot() instanceof CategoryPlot) {
        CategoryPlot plot = chart.getCategoryPlot();
        CategoryDataset dataset = plot.getDataset();
        CategoryItemRenderer renderer = plot.getRenderer();

        for (int i = 0; i < dataset.getRowCount(); i++) {
            Paint p = paint[i % paint.length];

            paintHelper.set(dataset.getRowKey(i), p);
            renderer.setSeriesPaint(i, p);
        }
    }

    return this;
}

From source file:msi.gama.outputs.layers.charts.StandardXYItemRenderer.java

/**
 * Returns a legend item for a series.//from w w w.j  av a 2s  .c  o  m
 *
 * @param datasetIndex
 *            the dataset index (zero-based).
 * @param series
 *            the series index (zero-based).
 *
 * @return A legend item for the series.
 */
@Override
public LegendItem getLegendItem(final int datasetIndex, final int series) {
    final XYPlot plot = getPlot();
    if (plot == null) {
        return null;
    }
    LegendItem result = null;
    final XYDataset dataset = plot.getDataset(datasetIndex);
    if (dataset != null) {
        if (getItemVisible(series, 0)) {
            final String label = getLegendItemLabelGenerator().generateLabel(dataset, series);
            final String description = label;
            String toolTipText = null;
            if (getLegendItemToolTipGenerator() != null) {
                toolTipText = getLegendItemToolTipGenerator().generateLabel(dataset, series);
            }
            String urlText = null;
            if (getLegendItemURLGenerator() != null) {
                urlText = getLegendItemURLGenerator().generateLabel(dataset, series);
            }
            final Shape shape = lookupLegendShape(series);
            final boolean shapeFilled = getItemShapeFilled(series, 0);
            final Paint paint = lookupSeriesPaint(series);
            final Paint linePaint = paint;
            final Stroke lineStroke = lookupSeriesStroke(series);
            result = new LegendItem(label, description, toolTipText, urlText, this.baseShapesVisible, shape,
                    shapeFilled, paint, !shapeFilled, paint, lineStroke, this.plotLines, this.legendLine,
                    lineStroke, linePaint);
            result.setLabelFont(lookupLegendTextFont(series));
            final Paint labelPaint = lookupLegendTextPaint(series);
            if (labelPaint != null) {
                result.setLabelPaint(labelPaint);
            }
            result.setDataset(dataset);
            result.setDatasetIndex(datasetIndex);
            result.setSeriesKey(dataset.getSeriesKey(series));
            result.setSeriesIndex(series);
        }
    }
    return result;
}

From source file:io.github.mzmine.util.jfreechart.IntelligentItemLabelGenerator.java

/**
 * @see org.jfree.chart.labels.XYItemLabelGenerator#generateLabel(org.jfree.data.xy.XYDataset,
 *      int, int)/*from  w  w  w.j  av  a 2s  .c  om*/
 */
public String generateLabel(XYDataset currentDataset, int currentSeries, int currentItem) {

    XYPlot plot = chartNode.getChart().getXYPlot();

    // X and Y values of the current data point
    final double currentXValue = currentDataset.getXValue(currentSeries, currentItem);
    final double currentYValue = currentDataset.getYValue(currentSeries, currentItem);

    // Calculate X axis span of 1 screen pixel
    final double xLength = plot.getDomainAxis().getRange().getLength();
    final double pixelX = xLength / chartNode.getWidth();

    // Calculate the distance from the current point where labels might
    // overlap
    final double dangerZoneX = (reservedPixels / 2) * pixelX;

    // Range on X axis that we're going to check for higher data points. If
    // a higher data point is found, we don't place a label on this one.
    final Range<Double> dangerZoneRange = Range.closed(currentXValue - dangerZoneX,
            currentXValue + dangerZoneX);

    // Iterate through data sets
    for (int datasetIndex = 0; datasetIndex < plot.getDatasetCount(); datasetIndex++) {

        XYDataset dataset = plot.getDataset(datasetIndex);

        // Some data sets could have been removed
        if (dataset == null)
            continue;

        final int seriesCount = dataset.getSeriesCount();

        // Iterate through series
        for (int seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) {

            final int itemCount = dataset.getItemCount(seriesIndex);

            // Find the index of a data point that is closest to
            // currentXValue
            int closestValueIndex;
            if (dataset == currentDataset && seriesIndex == currentSeries) {
                closestValueIndex = currentItem;
            } else {
                closestValueIndex = findClosestXIndex(dataset, seriesIndex, currentXValue, 0, itemCount - 1);
            }

            // Search to the left of the closest data point
            for (int i = closestValueIndex; (i >= 0)
                    && (dangerZoneRange.contains(dataset.getX(seriesIndex, i).doubleValue())); i--) {
                if (dataset.getYValue(seriesIndex, i) > currentYValue)
                    return null;

                // In the case there are equal values, only place the label
                // on the leftmost value
                if (dataset.getYValue(seriesIndex, i) == currentYValue
                        && (dataset.getXValue(seriesIndex, i) < currentXValue))
                    return null;

            }

            // Search to the right of the closest data point
            for (int i = closestValueIndex + 1; (i < itemCount)
                    && (dangerZoneRange.contains(dataset.getX(seriesIndex, i).doubleValue())); i++) {
                if (dataset.getYValue(seriesIndex, i) > currentYValue)
                    return null;
            }

        }

    }

    // If no higher data point was found, create the label
    String label = underlyingGenerator.generateLabel(currentDataset, currentSeries, currentItem);

    return label;

}