Example usage for org.jfree.data.time TimeSeries TimeSeries

List of usage examples for org.jfree.data.time TimeSeries TimeSeries

Introduction

In this page you can find the example usage for org.jfree.data.time TimeSeries TimeSeries.

Prototype

public TimeSeries(Comparable name) 

Source Link

Document

Creates a new (empty) time series.

Usage

From source file:org.jfree.data.time.junit.TimeSeriesTest.java

/**
 * Some checks for the delete(int, int) method.
 *///  ww  w. j  a va  2 s  .c o m
public void testDelete3() {
    TimeSeries s1 = new TimeSeries("S1");
    s1.add(new Year(2011), 1.1);
    s1.add(new Year(2012), 2.2);
    s1.add(new Year(2013), 3.3);
    s1.add(new Year(2014), 4.4);
    s1.add(new Year(2015), 5.5);
    s1.add(new Year(2016), 6.6);
    s1.delete(2, 5);
    assertEquals(2, s1.getItemCount());
    assertEquals(new Year(2011), s1.getTimePeriod(0));
    assertEquals(new Year(2012), s1.getTimePeriod(1));
    assertEquals(1.1, s1.getMinY(), EPSILON);
    assertEquals(2.2, s1.getMaxY(), EPSILON);
}

From source file:org.jfree.data.time.TimeSeriesCollectionTest.java

/**
 * This method provides a check for the bounds calculated using the
 * {@link DatasetUtilities#findDomainBounds(org.jfree.data.xy.XYDataset,
 * java.util.List, boolean)} method./*  w  ww.  ja  v  a2  s.  c  o m*/
 */
@Test
public void testFindDomainBounds() {
    TimeSeriesCollection dataset = new TimeSeriesCollection();
    List visibleSeriesKeys = new java.util.ArrayList();
    Range r = DatasetUtilities.findDomainBounds(dataset, visibleSeriesKeys, true);
    assertNull(r);

    TimeSeries s1 = new TimeSeries("S1");
    dataset.addSeries(s1);
    visibleSeriesKeys.add("S1");
    r = DatasetUtilities.findDomainBounds(dataset, visibleSeriesKeys, true);
    assertNull(r);

    // store the current time zone
    TimeZone saved = TimeZone.getDefault();
    TimeZone.setDefault(TimeZone.getTimeZone("Europe/Paris"));

    s1.add(new Year(2008), 8.0);
    r = DatasetUtilities.findDomainBounds(dataset, visibleSeriesKeys, true);
    assertEquals(1199142000000.0, r.getLowerBound(), EPSILON);
    assertEquals(1230764399999.0, r.getUpperBound(), EPSILON);

    TimeSeries s2 = new TimeSeries("S2");
    dataset.addSeries(s2);
    s2.add(new Year(2009), 9.0);
    s2.add(new Year(2010), 10.0);
    r = DatasetUtilities.findDomainBounds(dataset, visibleSeriesKeys, true);
    assertEquals(1199142000000.0, r.getLowerBound(), EPSILON);
    assertEquals(1230764399999.0, r.getUpperBound(), EPSILON);

    visibleSeriesKeys.add("S2");
    r = DatasetUtilities.findDomainBounds(dataset, visibleSeriesKeys, true);
    assertEquals(1199142000000.0, r.getLowerBound(), EPSILON);
    assertEquals(1293836399999.0, r.getUpperBound(), EPSILON);

    // restore the default time zone
    TimeZone.setDefault(saved);
}

From source file:DashboardInterface.LaunchGraph.java

public void addDataset(String title, int index, int range) {
    XYSplineRenderer render = new XYSplineRenderer();
    TimeSeriesCollection dataset = new TimeSeriesCollection();
    TimeSeries series = new TimeSeries(title);
    dataset.addSeries(series);/*from   w  ww . ja  va 2  s  .  c om*/
    XYDataset xyDataset = dataset;

    plot.setDataset(index, xyDataset);
    plot.setRenderer(index, render);

    NumberAxis axis = new NumberAxis(title);
    axis.setRange(0, range);

    plot.setRangeAxis(index, axis);
    plot.mapDatasetToRangeAxis(index, index);

    XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRendererForDataset(xyDataset);
    renderer.setBaseShapesVisible(false);
    renderer.setBaseShapesFilled(false);
}

From source file:sk.uniza.fri.pds.spotreba.energie.gui.MainGui.java

private void showSpendingStatisticsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showSpendingStatisticsActionPerformed
    final SpendingStatisticsParameters params = new SpendingStatisticsParameters();
    int option = showUniversalInputDialog(params, "Vvoj spotreby");
    if (option == JOptionPane.OK_OPTION) {
        new SwingWorker<List, RuntimeException>() {
            @Override/*from   w w w .  j ava  2 s. c  om*/
            protected List doInBackground() throws Exception {
                try {
                    return SeHistoriaService.getInstance().getSpendingStatistics(params);
                } catch (RuntimeException e) {
                    publish(e);
                    return null;
                }
            }

            @Override
            protected void done() {
                try {
                    List<KrokSpotreby> spendingStatistics = get();
                    if (spendingStatistics != null) {
                        final TimeSeries series = new TimeSeries("");
                        final String title = "Vvoj spotreby";
                        for (KrokSpotreby krok : spendingStatistics) {
                            series.add(new Month(krok.getDatumOd()), krok.getSpotreba());
                        }
                        final IntervalXYDataset dataset = (IntervalXYDataset) new TimeSeriesCollection(series);
                        JFreeChart chart = ChartFactory.createXYBarChart(title, // title
                                "", // x-axis label
                                true, // date axis?
                                "", // y-axis label
                                dataset, // data
                                PlotOrientation.VERTICAL, // orientation
                                false, // create legend?
                                true, // generate tooltips?
                                false // generate URLs?
                        );

                        // Set date axis style
                        DateAxis axis = (DateAxis) ((XYPlot) chart.getPlot()).getDomainAxis();
                        axis.setDateFormatOverride(new SimpleDateFormat("yyyy"));
                        DateFormat formatter = new SimpleDateFormat("yyyy");
                        DateTickUnit unit = new DateTickUnit(DateTickUnitType.YEAR, 1, formatter);
                        axis.setTickUnit(unit);
                        JOptionPane.showMessageDialog(null, new ChartPanel(chart));
                    }
                } catch (InterruptedException | ExecutionException ex) {
                    Logger.getLogger(MainGui.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

            @Override
            protected void process(List<RuntimeException> chunks) {
                if (chunks.size() > 0) {
                    showException("Chyba", chunks.get(0));
                }
            }

        }.execute();
    }
}

From source file:org.jfree.data.time.TimeSeriesTest.java

/**
 * Tests the equals method.//  w w  w.  j  ava  2 s.c o  m
 */
@Test
public void testEquals() {
    TimeSeries s1 = new TimeSeries("Time Series 1");
    TimeSeries s2 = new TimeSeries("Time Series 2");
    boolean b1 = s1.equals(s2);
    assertFalse("b1", b1);

    s2.setKey("Time Series 1");
    boolean b2 = s1.equals(s2);
    assertTrue("b2", b2);

    RegularTimePeriod p1 = new Day();
    RegularTimePeriod p2 = p1.next();
    s1.add(p1, 100.0);
    s1.add(p2, 200.0);
    boolean b3 = s1.equals(s2);
    assertFalse("b3", b3);

    s2.add(p1, 100.0);
    s2.add(p2, 200.0);
    boolean b4 = s1.equals(s2);
    assertTrue("b4", b4);

    s1.setMaximumItemCount(100);
    boolean b5 = s1.equals(s2);
    assertFalse("b5", b5);

    s2.setMaximumItemCount(100);
    boolean b6 = s1.equals(s2);
    assertTrue("b6", b6);

    s1.setMaximumItemAge(100);
    boolean b7 = s1.equals(s2);
    assertFalse("b7", b7);

    s2.setMaximumItemAge(100);
    boolean b8 = s1.equals(s2);
    assertTrue("b8", b8);
}

From source file:info.financialecology.finance.utilities.datastruct.VersatileTimeSeriesCollection.java

/**
 * Creates new <a href="http://tinyurl.com/c37gxle"><code>TimeSeries</code></a>
 * objects and adds them to this collection.
 * <p>//from  ww  w .j  a  v a2  s . c om
 * @param names an arbitrary number of time series keys
 */
public void newSeries(String... keys) {
    for (String name : keys)
        addSeries(new TimeSeries(name));
}

From source file:com.prezerak.windmill.gui.AveragesPanel.java

private void createSeries() {

    ButtonModel btnModel = WindMill.mainFrame.getAvgButtonGroup().getSelection();
    long pollInterval = Long.parseLong(btnModel.getActionCommand()) * 1000;
    float conversionFactor = getWindConversionFactor();

    datasetVel = new TimeSeries("Velocity");
    datasetDir = new TimeSeries("Direction");

    Velocity v = null;//w  ww .j a v  a2  s. c o m

    if (conversionFactor == 0)
        v = new BeaufortVelocity(conversionFactor);
    else
        v = new RegularVelocity(conversionFactor);

    rsVelDir = WindMill.database.queryRecordsInTimePeriod(startDate, endDate);
    //In case of no values
    try {
        rsVelDir.beforeFirst();
        if (!rsVelDir.next()) {
            datasetVel.add(new FixedMillisecond(startDate), null);
            datasetDir.add(new FixedMillisecond(startDate), null);
            datasetVel.add(new FixedMillisecond(endDate), null);
            datasetDir.add(new FixedMillisecond(endDate), null);
            maxY = 150;
            rsVelDir.close();

            if (datasetGust != null)
                datasetGust.delete(0, datasetGust.getItemCount() - 1);

            if (datasetHigh != null)
                datasetHigh.delete(0, datasetHigh.getItemCount() - 1);

            if (datasetHigher != null)
                datasetHigher.delete(0, datasetHigher.getItemCount() - 1);

            return;
        }
    } catch (SQLException e) {
        Utilities.printSQLException(e);
    }

    //Graph display with actual values
    if (pollInterval == 0) {
        try {
            rsVelDir.beforeFirst();
            while (rsVelDir.next()) {
                long currentTime = rsVelDir.getLong(rsVelDir.findColumn("timeMills"));
                FixedMillisecond timePeriod = new FixedMillisecond(currentTime);
                v.setValueInMeters(rsVelDir.getFloat(rsVelDir.findColumn("vel")));
                datasetVel.add(timePeriod, v.getValue());
                datasetDir.add(timePeriod, rsVelDir.getFloat(rsVelDir.findColumn("dir")));
            }
        } catch (SQLException e) {
            Utilities.printSQLException(e);
        }
    } else {

        //Obviously pollInterval !=0 so we aim for average
        try {
            rsVelDir.first();
            long startT = startDate + (rsVelDir.getLong(rsVelDir.findColumn("timeMills")) - startDate)
                    / pollInterval * pollInterval;

            rsVelDir.last();
            long endT = startT + pollInterval;
            long endTime = rsVelDir.getLong(rsVelDir.findColumn("timeMills")) / pollInterval * pollInterval
                    + pollInterval;

            float sumVel = 0;
            float sumDir = 0;
            long counter = 0;

            rsVelDir.first();
            while (endT < endTime) {
                long time = 0;//set to UNIX epoch;
                if (!rsVelDir.isAfterLast())
                    time = rsVelDir.getLong(rsVelDir.findColumn("timeMills"));
                if (time >= startT && time < endT) {
                    sumVel += rsVelDir.getFloat(rsVelDir.findColumn("vel"));
                    sumDir += rsVelDir.getFloat(rsVelDir.findColumn("dir"));
                    rsVelDir.next();
                    counter++;
                } else {
                    FixedMillisecond timePeriod = new FixedMillisecond(endT);
                    if (counter != 0)
                        v.setValueInMeters(sumVel / counter);
                    else
                        v.setValueInMeters(0.0f);
                    datasetVel.add(timePeriod, v.getValue());
                    if (counter != 0)
                        datasetDir.add(timePeriod, sumDir / counter);
                    else
                        datasetDir.add(timePeriod, 0.0f);
                    startT = endT;
                    endT += pollInterval;
                    sumVel = 0;
                    sumDir = 0;
                    counter = 0;
                }
            }
            rsVelDir.close();
        } catch (SQLException e) {
            Utilities.printSQLException(e);
        }
    }

    datasetGust = queryAlarm(Gust.getInstance().GUST, "Gust");
    if (Gust.getInstance().isOn() && Gust.getInstance().getStartTime() >= startDate
            && Gust.getInstance().getStartTime() < endDate) {
        long t = 0;
        long currentT = System.currentTimeMillis();
        if (endDate < currentT)
            t = endDate;
        else
            t = currentT;
        SimpleTimePeriod timePeriod = new SimpleTimePeriod(Gust.getInstance().getStartTime(), t);
        TimePeriodValue timePeriodValue = new TimePeriodValue(timePeriod, 1);
        datasetGust.add(timePeriodValue);
    }

    datasetHigh = queryAlarm(High.getInstance().HIGH, "High");
    if (High.getInstance().isOn() && High.getInstance().getStartTime() >= startDate
            && High.getInstance().getStartTime() < endDate) {
        long t = 0;
        long currentT = System.currentTimeMillis();
        if (endDate < currentT)
            t = endDate;
        else
            t = currentT;

        SimpleTimePeriod timePeriod = new SimpleTimePeriod(High.getInstance().getStartTime(), t);
        TimePeriodValue timePeriodValue = new TimePeriodValue(timePeriod, 1);
        datasetHigh.add(timePeriodValue);
    }

    datasetHigher = queryAlarm(Higher.getInstance().HIGHER, "Higher");
    if (Higher.getInstance().isOn() && Higher.getInstance().getStartTime() >= startDate
            && Higher.getInstance().getStartTime() < endDate) {
        long t = 0;
        long currentT = System.currentTimeMillis();
        if (endDate < currentT)
            t = endDate;
        else
            t = currentT;

        SimpleTimePeriod timePeriod = new SimpleTimePeriod(Higher.getInstance().getStartTime(), t);
        TimePeriodValue timePeriodValue = new TimePeriodValue(timePeriod, 1);
        datasetHigher.add(timePeriodValue);
    }
}

From source file:org.jfree.data.time.junit.TimeSeriesTest.java

/**
 * Check that the item bounds are determined correctly when there is a
 * maximum item count and a new value is added.
 *//*from  w ww  .ja va2  s . co  m*/
public void testDelete_RegularTimePeriod() {
    TimeSeries s1 = new TimeSeries("S1");
    s1.add(new Year(2010), 1.1);
    s1.add(new Year(2011), 2.2);
    s1.add(new Year(2012), 3.3);
    s1.add(new Year(2013), 4.4);
    s1.delete(new Year(2010));
    s1.delete(new Year(2013));
    assertEquals(2.2, s1.getMinY(), EPSILON);
    assertEquals(3.3, s1.getMaxY(), EPSILON);
}

From source file:org.mwc.debrief.track_shift.views.StackedDotHelper.java

/**
 * ok, our track has been dragged, calculate the new series of offsets
 * //  w w  w. j a v a  2s . co  m
 * @param linePlot
 * @param dotPlot
 * @param onlyVis
 * @param showCourse
 * @param b
 * @param holder
 * @param logger
 * 
 * @param currentOffset
 *          how far the current track has been dragged
 */
public void updateBearingData(final XYPlot dotPlot, final XYPlot linePlot, final TrackDataProvider tracks,
        final boolean onlyVis, final boolean showCourse, final boolean flipAxes, final Composite holder,
        final ErrorLogger logger, final boolean updateDoublets) {
    // do we even have a primary track
    if (_primaryTrack == null)
        return;

    // ok, find the track wrappers
    if (_secondaryTrack == null)
        initialise(tracks, false, onlyVis, holder, logger, "Bearing", true, false);

    // did it work?
    // if (_secondaryTrack == null)
    // return;

    // ok - the tracks have moved. better update the doublets
    if (updateDoublets)
        updateDoublets(onlyVis, true, false);

    // aah - but what if we've ditched our doublets?
    if ((_primaryDoublets == null) || (_primaryDoublets.size() == 0)) {
        // better clear the plot
        dotPlot.setDataset(null);
        linePlot.setDataset(null);
        return;
    }

    // create the collection of series
    final TimeSeriesCollection errorSeries = new TimeSeriesCollection();
    final TimeSeriesCollection actualSeries = new TimeSeriesCollection();

    // produce a dataset for each track
    final TimeSeries errorValues = new TimeSeries(_primaryTrack.getName());

    final TimeSeries measuredValues = new TimeSeries("Measured");
    final TimeSeries ambigValues = new TimeSeries("Ambiguous Bearing");
    final TimeSeries calculatedValues = new TimeSeries("Calculated");

    final TimeSeries osCourseValues = new TimeSeries("Course");

    // ok, run through the points on the primary track
    final Iterator<Doublet> iter = _primaryDoublets.iterator();
    while (iter.hasNext()) {
        final Doublet thisD = iter.next();

        try {
            // obvious stuff first (stuff that doesn't need the tgt data)
            final Color thisColor = thisD.getColor();
            double measuredBearing = thisD.getMeasuredBearing();
            double ambigBearing = thisD.getAmbiguousMeasuredBearing();
            final HiResDate currentTime = thisD.getDTG();
            final FixedMillisecond thisMilli = new FixedMillisecond(currentTime.getDate().getTime());

            // put the measured bearing back in the positive domain
            if (measuredBearing < 0)
                measuredBearing += 360d;

            // stop, stop, stop - do we wish to plot bearings in the +/- 180 domain?
            if (flipAxes)
                if (measuredBearing > 180)
                    measuredBearing -= 360;

            final ColouredDataItem mBearing = new ColouredDataItem(thisMilli, measuredBearing, thisColor, false,
                    null);

            // and add them to the series
            measuredValues.add(mBearing);

            if (ambigBearing != Doublet.INVALID_BASE_FREQUENCY) {
                if (flipAxes)
                    if (ambigBearing > 180)
                        ambigBearing -= 360;

                final ColouredDataItem amBearing = new ColouredDataItem(thisMilli, ambigBearing, thisColor,
                        false, null);
                ambigValues.add(amBearing);
            }

            // do we have target data?
            if (thisD.getTarget() != null) {
                double calculatedBearing = thisD.getCalculatedBearing(null, null);
                final Color calcColor = thisD.getTarget().getColor();
                final double thisError = thisD.calculateBearingError(measuredBearing, calculatedBearing);
                final ColouredDataItem newError = new ColouredDataItem(thisMilli, thisError, thisColor, false,
                        null);

                if (flipAxes)
                    if (calculatedBearing > 180)
                        calculatedBearing -= 360;

                final ColouredDataItem cBearing = new ColouredDataItem(thisMilli, calculatedBearing, calcColor,
                        true, null);

                errorValues.add(newError);
                calculatedValues.add(cBearing);
            }

        } catch (final SeriesException e) {
            CorePlugin.logError(Status.INFO, "some kind of trip whilst updating bearing plot", e);
        }

    }

    // right, we do course in a special way, since it isn't dependent on the
    // target track. Do course here.
    HiResDate startDTG, endDTG;

    // just double-check we've still got our primary doublets
    if (_primaryDoublets == null) {
        CorePlugin.logError(Status.WARNING, "FOR SOME REASON PRIMARY DOUBLETS IS NULL - INVESTIGATE", null);
        return;
    }

    if (_primaryDoublets.size() == 0) {
        CorePlugin.logError(Status.WARNING, "FOR SOME REASON PRIMARY DOUBLETS IS ZERO LENGTH - INVESTIGATE",
                null);
        return;
    }

    startDTG = _primaryDoublets.first().getDTG();
    endDTG = _primaryDoublets.last().getDTG();

    if (startDTG.greaterThan(endDTG)) {
        System.err.println("in the wrong order, start:" + startDTG + " end:" + endDTG);
        return;
    }

    final Collection<Editable> hostFixes = _primaryTrack.getItemsBetween(startDTG, endDTG);

    // loop through th items
    for (final Iterator<Editable> iterator = hostFixes.iterator(); iterator.hasNext();) {
        final Editable editable = (Editable) iterator.next();
        final FixWrapper fw = (FixWrapper) editable;
        final FixedMillisecond thisMilli = new FixedMillisecond(fw.getDateTimeGroup().getDate().getTime());
        double ownshipCourse = MWC.Algorithms.Conversions.Rads2Degs(fw.getCourse());

        // stop, stop, stop - do we wish to plot bearings in the +/- 180 domain?
        if (flipAxes)
            if (ownshipCourse > 180)
                ownshipCourse -= 360;

        final ColouredDataItem crseBearing = new ColouredDataItem(thisMilli, ownshipCourse, fw.getColor(), true,
                null);
        osCourseValues.add(crseBearing);
    }

    // ok, add these new series

    if (showCourse) {
        actualSeries.addSeries(osCourseValues);
    }

    if (errorValues.getItemCount() > 0)
        errorSeries.addSeries(errorValues);

    actualSeries.addSeries(measuredValues);

    if (ambigValues.getItemCount() > 0)
        actualSeries.addSeries(ambigValues);

    if (calculatedValues.getItemCount() > 0)
        actualSeries.addSeries(calculatedValues);

    dotPlot.setDataset(errorSeries);
    linePlot.setDataset(actualSeries);
}

From source file:net.brewspberry.front.JFreeGraphServlet.java

/**
 * This method creates a TimeSeriesCollection from raw String values
 * /*w  ww.  ja va2  s.c o m*/
 * @param data
 * @return
 * @throws NumberFormatException
 * @throws ParseException
 */
public TimeSeriesCollection createDataset(List<String[]> data, boolean timeLimited, boolean fromDB)
        throws NumberFormatException, ParseException {

    TimeSeriesCollection dataSet = new TimeSeriesCollection();

    int compteur = data.size();
    List<TimeSeries> serie = new ArrayList<TimeSeries>();

    logger.fine("Compteur " + compteur + " length :" + data.get(0).length);

    // On cree autant de series qu'il y a de sondes
    for (int k = 0; k <= (data.get(0).length - 5) / 2; k++) {
        serie.add(new TimeSeries("PROBE" + k));
        logger.fine("Added timeSeries PROBE" + k);
    }

    /*
     * For each line like [2015-07-21 12:34:56, 12345, 54321]
     */
    for (int i = 0; i < compteur; i++) {

        /*
         * for each temperature value
         */
        int increment;
        if (fromDB) {
            increment = 1;
        } else {
            increment = 2;
        }
        for (int j = 5; j < data.get(i).length; j += increment) {

            Date dataDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(data.get(i)[0]);

            Calendar cal1 = Calendar.getInstance();
            cal1.setTime(dataDate);
            Calendar cal2 = Calendar.getInstance();
            cal2.add(Calendar.MINUTE, graphHorizontalTimeLengthInMinutes);
            logger.fine("Array size : " + data.get(i).length + " & compteur=" + j);

            if (timeLimited) {
                if (cal1.after(cal2)) {
                    if (data.get(i)[j] != null) {
                        // Adds [time, temperature] to the corresponding (i)
                        // serie

                        logger.fine("Adding temperature" + data.get(i)[j] + " to serie nbr" + (j - 5) / 2);
                        serie.get((j - 5) / 2).addOrUpdate(new Second(dataDate),
                                Double.parseDouble(data.get(i)[j]));
                    }
                }
            } else {
                if (data.get(i)[j] != null) {

                    serie.get((j - 5)).addOrUpdate(new Second(dataDate), Double.parseDouble(data.get(i)[j]));
                }
            }
        }
    }

    // Adds each serie to the dataset
    for (int l = 0; l < serie.size(); l++) {
        logger.fine("serie size : " + serie.get(l).getItemCount());

        dataSet.addSeries(serie.get(l));
    }

    logger.fine("dataSet size : " + dataSet.getSeriesCount());

    return dataSet;

}