List of usage examples for org.jfree.data.time TimeSeries TimeSeries
public TimeSeries(Comparable name)
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; }