Example usage for org.jfree.chart.renderer.xy XYErrorRenderer setSeriesPaint

List of usage examples for org.jfree.chart.renderer.xy XYErrorRenderer setSeriesPaint

Introduction

In this page you can find the example usage for org.jfree.chart.renderer.xy XYErrorRenderer setSeriesPaint.

Prototype

public void setSeriesPaint(int series, Paint paint) 

Source Link

Document

Sets the paint used for a series and sends a RendererChangeEvent to all registered listeners.

Usage

From source file:projects.wdlf47tuc.ProcessAllSwathcal.java

/**
 * Computes the luminosity function for the current boxed region and plots it in a JFrame.
 * Also prints out the coordinates of the selection box vertices and the luminosity function
 * quantities./*from  w w  w.  j  a  v  a  2  s.  c o  m*/
 * 
 * @param sources
 *    The {@link Source}s to compute the luminosity function for.
 */
private void computeAndPlotLuminosityFunction(List<Source> sources) {

    // Print out coordinates of selection box corners
    System.out.println("# Coordinates of selection box corners:");
    System.out.println("# (" + col1Filter + "-" + col2Filter + ")\t" + magFilter);
    for (double[] point : points) {
        System.out.println("# " + point[0] + "\t" + point[1]);
    }
    System.out.println("# Luminosity function:");
    System.out.println("# Mag.\tN\tsigN");

    double magBinWidth = 0.5;

    // Get the range of the data
    double mMin = Double.MAX_VALUE;
    double mMax = -Double.MAX_VALUE;
    for (Source source : sources) {
        double mag = source.getMag(magFilter) - mu;
        mMin = Math.min(mMin, mag);
        mMax = Math.max(mMax, mag);
    }

    // Quantize this to a whole number
    mMin = Math.floor(mMin);
    mMax = Math.ceil(mMax);

    int nBins = (int) Math.rint((mMax - mMin) / magBinWidth);

    // Array to accumulate all objects in each bin
    int[] n = new int[nBins];

    for (Source source : sources) {
        double mag = source.getMag(magFilter) - mu;
        // Bin number
        int bin = (int) Math.floor((mag - mMin) / magBinWidth);
        n[bin]++;
    }

    YIntervalSeries luminosityFunction = new YIntervalSeries("Luminosity Function");

    for (int i = 0; i < nBins; i++) {
        // Bin centre
        double x = mMin + i * magBinWidth + 0.5 * magBinWidth;
        double y = n[i];
        double yErr = n[i] > 0 ? Math.sqrt(y) : 0;
        luminosityFunction.add(x, y, y - yErr, y + yErr);
        System.out.println(x + "\t" + y + "\t" + yErr);
    }

    final YIntervalSeriesCollection data = new YIntervalSeriesCollection();
    data.addSeries(luminosityFunction);

    XYErrorRenderer renderer = new XYErrorRenderer();
    renderer.setSeriesLinesVisible(0, true);
    renderer.setSeriesShapesVisible(0, true);
    renderer.setSeriesShape(0, new Ellipse2D.Float(-1f, -1f, 2, 2));
    renderer.setSeriesPaint(0, ChartColor.BLACK);

    NumberAxis xAxis = new NumberAxis("Absolute Magnitude (" + magFilter.toString() + ")");
    xAxis.setAutoRange(true);
    xAxis.setAutoRangeIncludesZero(false);

    NumberAxis yAxis = new NumberAxis("N");
    yAxis.setAutoRange(true);
    yAxis.setAutoRangeIncludesZero(true);

    // Configure plot
    XYPlot xyplot = new XYPlot(data, xAxis, yAxis, renderer);
    xyplot.setBackgroundPaint(Color.lightGray);
    xyplot.setDomainGridlinePaint(Color.white);
    xyplot.setDomainGridlinesVisible(true);
    xyplot.setRangeGridlinePaint(Color.white);

    // Configure chart
    JFreeChart chart = new JFreeChart("Luminosity Function", xyplot);
    chart.setBackgroundPaint(Color.white);
    chart.setTitle("47 Tuc luminosity function");
    chart.removeLegend();

    final ChartPanel lfChartPanel = new ChartPanel(chart);

    java.awt.EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            JFrame tester = new JFrame();
            tester.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            tester.setLayout(new BorderLayout());
            tester.add(lfChartPanel, BorderLayout.CENTER);
            tester.pack();
            tester.setVisible(true);
        }
    });

}

From source file:org.esa.beam.timeseries.ui.graph.TimeSeriesGraphModel.java

private void updatePlot(boolean hasData) {
    for (int i = 0; i < timeSeriesPlot.getDatasetCount(); i++) {
        timeSeriesPlot.setDataset(i, null);
    }//www .j av  a 2s .c  o  m
    timeSeriesPlot.clearRangeAxes();

    if (!hasData) {
        return;
    }

    paintMap.clear();
    final Set<String> aliasNamesSet = displayAxisMapping.getAliasNames();
    final String[] aliasNames = aliasNamesSet.toArray(new String[aliasNamesSet.size()]);

    for (String aliasName : aliasNamesSet) {
        consumeColors(aliasName, displayAxisMapping.getRasterNames(aliasName), QUALIFIER_RASTER);
        consumeColors(aliasName, displayAxisMapping.getInsituNames(aliasName), QUALIFIER_INSITU);
    }

    for (int aliasIdx = 0; aliasIdx < aliasNames.length; aliasIdx++) {
        String aliasName = aliasNames[aliasIdx];

        timeSeriesPlot.setRangeAxis(aliasIdx, createValueAxis(aliasName));

        final int aliasIndexOffset = aliasIdx * 3;
        final int cursorCollectionIndex = aliasIndexOffset + CURSOR_COLLECTION_INDEX_OFFSET;
        final int pinCollectionIndex = aliasIndexOffset + PIN_COLLECTION_INDEX_OFFSET;
        final int insituCollectionIndex = aliasIndexOffset + INSITU_COLLECTION_INDEX_OFFSET;

        TimeSeriesCollection cursorDataset = new TimeSeriesCollection();
        timeSeriesPlot.setDataset(cursorCollectionIndex, cursorDataset);

        TimeSeriesCollection pinDataset = new TimeSeriesCollection();
        timeSeriesPlot.setDataset(pinCollectionIndex, pinDataset);

        TimeSeriesCollection insituDataset = new TimeSeriesCollection();
        timeSeriesPlot.setDataset(insituCollectionIndex, insituDataset);

        timeSeriesPlot.mapDatasetToRangeAxis(cursorCollectionIndex, aliasIdx);
        timeSeriesPlot.mapDatasetToRangeAxis(pinCollectionIndex, aliasIdx);
        timeSeriesPlot.mapDatasetToRangeAxis(insituCollectionIndex, aliasIdx);

        final XYErrorRenderer pinRenderer = createXYErrorRenderer();
        final XYErrorRenderer cursorRenderer = createXYErrorRenderer();
        final XYErrorRenderer insituRenderer = createXYErrorRenderer();

        pinRenderer.setBaseStroke(PIN_STROKE);
        cursorRenderer.setBaseStroke(CURSOR_STROKE);

        insituRenderer.setBaseLinesVisible(false);
        insituRenderer.setBaseShapesFilled(false);

        final List<String> rasterNamesSet = displayAxisMapping.getRasterNames(aliasName);
        final String[] rasterNames = rasterNamesSet.toArray(new String[rasterNamesSet.size()]);

        for (int i = 0; i < rasterNames.length; i++) {
            final String paintKey = aliasName + QUALIFIER_RASTER + rasterNames[i];
            final Paint paint = paintMap.get(paintKey);
            cursorRenderer.setSeriesPaint(i, paint);
            pinRenderer.setSeriesPaint(i, paint);
        }

        final List<String> insituNamesSet = displayAxisMapping.getInsituNames(aliasName);
        final String[] insituNames = insituNamesSet.toArray(new String[insituNamesSet.size()]);

        for (int i = 0; i < insituNames.length; i++) {
            final String paintKey = aliasName + QUALIFIER_INSITU + insituNames[i];
            final Paint paint = paintMap.get(paintKey);
            insituRenderer.setSeriesPaint(i, paint);
        }

        timeSeriesPlot.setRenderer(cursorCollectionIndex, cursorRenderer);
        timeSeriesPlot.setRenderer(pinCollectionIndex, pinRenderer);
        timeSeriesPlot.setRenderer(insituCollectionIndex, insituRenderer);
    }
}

From source file:weka.classifiers.timeseries.eval.graph.JFreeChartDriver.java

protected JFreeChart getFutureForecastChart(TSForecaster forecaster, List<List<NumericPrediction>> preds,
        List<String> targetNames, Instances history) {

    if (forecaster instanceof TSLagUser && history != null) {
        TSLagMaker lagMaker = ((TSLagUser) forecaster).getTSLagMaker();
        if (lagMaker.getAdjustForTrends() && !lagMaker.isUsingAnArtificialTimeIndex()) {

            // fill in any missing time stamps only
            history = new Instances(history);
            history = weka.classifiers.timeseries.core.Utils.replaceMissing(history, null,
                    lagMaker.getTimeStampField(), true, lagMaker.getPeriodicity(), lagMaker.getSkipEntries());
        }/*ww  w. j a va2 s. c om*/
    }

    // set up a collection of series
    XYIntervalSeriesCollection xyDataset = new XYIntervalSeriesCollection();

    if (history != null) {
        // add actual historical data values
        for (String targetName : targetNames) {
            XYIntervalSeries targetSeries = new XYIntervalSeries(targetName, false, false);
            xyDataset.addSeries(targetSeries);
        }
    }

    // add predicted series
    for (String targetName : targetNames) {
        XYIntervalSeries targetSeries = new XYIntervalSeries(targetName + "-predicted", false, false);
        xyDataset.addSeries(targetSeries);
    }

    ValueAxis timeAxis = null;
    NumberAxis valueAxis = new NumberAxis("");
    valueAxis.setAutoRangeIncludesZero(false);
    int timeIndex = -1;
    boolean timeAxisIsDate = false;
    double artificialTimeStart = 0;
    double lastRealTimeValue = Utils.missingValue();
    if (forecaster instanceof TSLagUser && history != null) {
        TSLagMaker lagMaker = ((TSLagUser) forecaster).getTSLagMaker();
        if (!lagMaker.isUsingAnArtificialTimeIndex() && lagMaker.getAdjustForTrends()) {
            String timeName = lagMaker.getTimeStampField();
            if (history.attribute(timeName).isDate()) {
                timeAxis = new DateAxis("");
                timeAxisIsDate = true;
                timeIndex = history.attribute(timeName).index();
            }
        } else {
            try {
                artificialTimeStart = (history != null) ? 1 : lagMaker.getArtificialTimeStartValue() + 1;
            } catch (Exception ex) {
            }
        }
    }

    if (timeAxis == null) {
        timeAxis = new NumberAxis("");
        ((NumberAxis) timeAxis).setAutoRangeIncludesZero(false);
    }

    boolean hasConfidenceIntervals = false;

    // now populate the series
    if (history != null) {

        // do the actuals first
        for (int i = 0; i < history.numInstances(); i++) {
            Instance current = history.instance(i);

            for (String targetName : targetNames) {
                int dataIndex = history.attribute(targetName.trim()).index();

                if (dataIndex >= 0) {
                    XYIntervalSeries actualSeries = null;
                    int actualIndex = xyDataset.indexOf(targetName);
                    actualSeries = xyDataset.getSeries(actualIndex);
                    double x = Utils.missingValue();

                    if (timeAxisIsDate) {
                        x = current.value(timeIndex);
                        if (!Utils.isMissingValue(x)) {
                            lastRealTimeValue = x;
                        }
                    } else {
                        x = artificialTimeStart;
                    }

                    double y = Utils.missingValue();
                    y = current.value(dataIndex);

                    if (!Utils.isMissingValue(x) && !Utils.isMissingValue(y)) {
                        if (actualSeries != null) {
                            actualSeries.add(x, x, x, y, y, y);
                        }
                    }
                }
            }

            if (!timeAxisIsDate) {
                artificialTimeStart++;
            }
        }
    }

    // now do the futures
    List<String> forecasterTargets = AbstractForecaster.stringToList(forecaster.getFieldsToForecast());

    // loop over the steps
    for (int j = 0; j < preds.size(); j++) {
        List<NumericPrediction> predsForStepJ = preds.get(j);

        // advance the real time index (if appropriate)
        if (timeAxisIsDate) {
            lastRealTimeValue = ((TSLagUser) forecaster).getTSLagMaker()
                    .advanceSuppliedTimeValue(lastRealTimeValue);
        }
        for (String targetName : targetNames) {

            // look up this requested target in the list that the forecaster
            // has predicted
            int predIndex = forecasterTargets.indexOf(targetName.trim());
            if (predIndex >= 0) {
                NumericPrediction predsForTargetAtStepJ = predsForStepJ.get(predIndex);
                XYIntervalSeries predSeries = null;
                int datasetIndex = xyDataset.indexOf(targetName + "-predicted");
                predSeries = xyDataset.getSeries(datasetIndex);

                if (predSeries != null) {
                    double y = predsForTargetAtStepJ.predicted();
                    double x = Utils.missingValue();
                    double yHigh = y;
                    double yLow = y;
                    double[][] conf = predsForTargetAtStepJ.predictionIntervals();
                    if (conf.length > 0) {
                        yLow = conf[0][0];
                        yHigh = conf[0][1];
                        hasConfidenceIntervals = true;
                    }

                    if (!timeAxisIsDate) {
                        x = artificialTimeStart;
                    } else {
                        x = lastRealTimeValue;
                    }

                    if (!Utils.isMissingValue(x) && !Utils.isMissingValue(y)) {
                        predSeries.add(x, x, x, y, yLow, yHigh);
                    }
                }
            }
        }

        // advance the artificial time index (if appropriate)
        if (!timeAxisIsDate) {
            artificialTimeStart++;
        }
    }

    String title = "Future forecast for: ";
    for (String s : targetNames) {
        title += s + ",";
    }
    title = title.substring(0, title.lastIndexOf(","));

    /*
     * String algoSpec = forecaster.getAlgorithmName(); title += " (" + algoSpec
     * + ")";
     */

    if (forecaster instanceof WekaForecaster && hasConfidenceIntervals) {
        double confPerc = ((WekaForecaster) forecaster).getConfidenceLevel() * 100.0;
        title += " [" + Utils.doubleToString(confPerc, 0) + "% conf. intervals]";
    }

    XYErrorRenderer renderer = new XYErrorRenderer();

    // renderer.setShapesFilled(true);
    XYPlot plot = new XYPlot(xyDataset, timeAxis, valueAxis, renderer);
    // renderer = (XYErrorRenderer)plot.getRenderer();
    if (history != null) {
        for (String targetName : targetNames) {
            XYIntervalSeries predSeries = null;
            int predIndex = xyDataset.indexOf(targetName + "-predicted");
            predSeries = xyDataset.getSeries(predIndex);

            XYIntervalSeries actualSeries = null;
            int actualIndex = xyDataset.indexOf(targetName);
            actualSeries = xyDataset.getSeries(actualIndex);

            if (actualSeries != null && predSeries != null) {
                // match the color of the actual series
                java.awt.Paint actualPaint = renderer.lookupSeriesPaint(actualIndex);
                renderer.setSeriesPaint(predIndex, actualPaint);

                // now set the line style to dashed
                BasicStroke dashed = new BasicStroke(1.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f,
                        new float[] { 5.0f }, 0.0f);

                renderer.setSeriesStroke(predIndex, dashed);
            }
        }
    }

    renderer.setBaseLinesVisible(true);
    renderer.setDrawXError(false);
    renderer.setDrawYError(true);

    JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
    chart.setBackgroundPaint(java.awt.Color.white);
    TextTitle chartTitle = chart.getTitle();
    String fontName = chartTitle.getFont().getFontName();
    java.awt.Font newFont = new java.awt.Font(fontName, java.awt.Font.PLAIN, 12);
    chartTitle.setFont(newFont);

    return chart;
}

From source file:jhplot.HChart.java

/**
 * Draw data from a P1D. Drawing updated automatically. 1st level errors are
 * shown if the dimension is above 5. Otherwise show X and Y. If you set
 * setChartPolar() before,m you can also show polar coordinates.
 * /* www .ja  va 2s. co m*/
 * @param d
 *            input P1D container
 */
public void add(P1D d) {

    if (cdatPolar[N1][N2] != null) {
        XYSeries SerData = new XYSeries(d.getTitle());
        for (int i = 0; i < d.size(); i++)
            SerData.add(d.getX(i), d.getY(i));
        cdatPolar[N1][N2].addSeries(SerData);
        return; // return if this is polar chart
    }

    // assume XY chart

    // System.out.println(d.dimension());
    LinePars lpp = d.getDrawOption();
    float width = (float) lpp.getPenWidth();
    int style = d.getLineStyle();
    float dash = lpp.getDashLength();
    int symbol = lpp.getSymbol();
    Shape shape = getShape(symbol, lpp.getSymbolSize());

    // setSeriesShapesFilled(int series, java.lang.Boolean flag)
    // setShapesFilled(boolean filled)

    if (d.dimension() > 5) {
        XYIntervalSeriesCollection c = new XYIntervalSeriesCollection();
        XYIntervalSeries SerData = new XYIntervalSeries(d.getTitle());
        for (int i = 0; i < d.size(); i++)
            SerData.add(d.getX(i), d.getX(i) - d.getXleft(i), d.getX(i) + d.getXright(i), d.getY(i),
                    d.getY(i) - d.getYlower(i), d.getY(i) + d.getYupper(i));
        c.addSeries(SerData);
        xyplot[N1][N2].setDataset(indexdat[N1][N2], c);

        XYErrorRenderer xyerrorrenderer = new XYErrorRenderer();
        xyerrorrenderer.setSeriesStroke(0, getStrokes(style, width, dash));
        xyerrorrenderer.setSeriesPaint(0, d.getColor());
        xyerrorrenderer.setSeriesOutlinePaint(0, d.getColor());
        xyerrorrenderer.setSeriesFillPaint(0, lpp.getFillColor());
        xyerrorrenderer.setSeriesShape(0, shape);
        if (symbol > 0 && symbol < 4)
            xyerrorrenderer.setSeriesShapesFilled(0, false);
        if (symbol > 3)
            xyerrorrenderer.setSeriesShapesFilled(0, true);

        rdat[N1][N2].add(xyerrorrenderer);
        type[N1][N2].put(new Integer(indexdat[N1][N2]), "pe");
        indexdat[N1][N2]++;

    } else if (d.dimension() == 4) {
        XYIntervalSeriesCollection c = new XYIntervalSeriesCollection();
        XYIntervalSeries SerData = new XYIntervalSeries(d.getTitle());
        for (int i = 0; i < d.size(); i++)
            SerData.add(d.getX(i), d.getX(i), d.getX(i), d.getY(i), d.getY(i) - d.getYlower(i),
                    d.getY(i) + d.getYupper(i));

        c.addSeries(SerData);
        xyplot[N1][N2].setDataset(indexdat[N1][N2], c);

        XYErrorRenderer xyerrorrenderer = new XYErrorRenderer();
        xyerrorrenderer.setSeriesStroke(0, getStrokes(style, width, dash));
        xyerrorrenderer.setSeriesPaint(0, d.getColor());
        xyerrorrenderer.setSeriesOutlinePaint(0, d.getColor());
        xyerrorrenderer.setSeriesFillPaint(0, lpp.getFillColor());
        xyerrorrenderer.setSeriesShape(0, shape);
        if (symbol > 0 && symbol < 4)
            xyerrorrenderer.setSeriesShapesFilled(0, false);
        if (symbol > 3)
            xyerrorrenderer.setSeriesShapesFilled(0, true);

        rdat[N1][N2].add(xyerrorrenderer);
        type[N1][N2].put(new Integer(indexdat[N1][N2]), "pe");
        indexdat[N1][N2]++;

    } else if (d.dimension() == 3) {
        XYIntervalSeriesCollection c = new XYIntervalSeriesCollection();
        XYIntervalSeries SerData = new XYIntervalSeries(d.getTitle());
        for (int i = 0; i < d.size(); i++)
            SerData.add(d.getX(i), d.getX(i), d.getX(i), d.getY(i), d.getY(i) - d.getYupper(i),
                    d.getY(i) + d.getYupper(i));

        c.addSeries(SerData);
        xyplot[N1][N2].setDataset(indexdat[N1][N2], c);

        XYErrorRenderer xyerrorrenderer = new XYErrorRenderer();
        xyerrorrenderer.setSeriesStroke(0, getStrokes(style, width, dash));
        xyerrorrenderer.setSeriesPaint(0, d.getColor());
        xyerrorrenderer.setSeriesOutlinePaint(0, d.getColor());
        xyerrorrenderer.setSeriesFillPaint(0, lpp.getFillColor());
        xyerrorrenderer.setSeriesShape(0, shape);
        if (symbol > 0 && symbol < 4)
            xyerrorrenderer.setSeriesShapesFilled(0, false);
        if (symbol > 3)
            xyerrorrenderer.setSeriesShapesFilled(0, true);

        rdat[N1][N2].add(xyerrorrenderer);
        type[N1][N2].put(new Integer(indexdat[N1][N2]), "pe");
        indexdat[N1][N2]++;

    } else {
        XYSeriesCollection c = new XYSeriesCollection();
        XYSeries SerData = new XYSeries(d.getTitle());
        for (int i = 0; i < d.size(); i++)
            SerData.add(d.getX(i), d.getY(i));
        c.addSeries(SerData);
        xyplot[N1][N2].setDataset(indexdat[N1][N2], c);

        XYLineAndShapeRenderer xyerrorrenderer = new XYLineAndShapeRenderer(false, true);
        xyerrorrenderer.setSeriesStroke(0, getStrokes(style, width, dash));
        xyerrorrenderer.setSeriesPaint(0, d.getColor());
        xyerrorrenderer.setSeriesOutlinePaint(0, d.getColor());

        xyerrorrenderer.setSeriesFillPaint(0, lpp.getFillColor());
        xyerrorrenderer.setSeriesShape(0, shape);
        if (symbol > 0 && symbol < 4)
            xyerrorrenderer.setSeriesShapesFilled(0, false);
        if (symbol > 3)
            xyerrorrenderer.setSeriesShapesFilled(0, true);

        rdat[N1][N2].add(xyerrorrenderer);
        type[N1][N2].put(new Integer(indexdat[N1][N2]), "p");
        indexdat[N1][N2]++;

    }

}