List of usage examples for org.jfree.data.time TimeSeries TimeSeries
public TimeSeries(Comparable name)
From source file:de.codesourcery.eve.skills.ui.components.impl.PriceHistoryComponent.java
private TimeSeries calcMovingAverage(String name, List<PriceInfo> data, MovingAverage dateRange) { // group price infos by days final Map<Date, List<PriceInfo>> pricesByDay = new HashMap<Date, List<PriceInfo>>(); for (PriceInfo info : data) { if (info.getAveragePrice() == 0) { continue; }/*from w ww. j a v a2 s. co m*/ final Date stripped = DateHelper.stripTime(info.getTimestamp().getLocalTime()); List<PriceInfo> existing = pricesByDay.get(stripped); if (existing == null) { existing = new ArrayList<PriceInfo>(); pricesByDay.put(stripped, existing); } existing.add(info); } // calculate daily averages final Map<Date, Double> averages = new HashMap<Date, Double>(); for (Map.Entry<Date, List<PriceInfo>> entry : pricesByDay.entrySet()) { double amount = 0; for (PriceInfo info : entry.getValue()) { amount += info.getAveragePrice(); } double average = amount / entry.getValue().size(); averages.put(entry.getKey(), average); } // sort averages ascending by dates final List<Date> dates = new ArrayList<Date>(); dates.addAll(averages.keySet()); Collections.sort(dates); if (dates.size() <= 2) { return null; } /* * For each date between * 'earliest' and 'latest': * * Calculate the average from this * day and the previous 4 days. */ final Date latest = dates.get(dates.size() - 1); final Date earliest = dates.get(0); final Calendar current = Calendar.getInstance(); current.setTime(latest); final Map<Date, Double> movingAverage = new HashMap<Date, Double>(); // TODO: Not a very efficient implementation.... final int days = dateRange.getDays(); do { int count = 0; double sum = 0; Calendar loop = Calendar.getInstance(); loop.setTime(current.getTime()); for (int i = 0; i < days; i++) { Double avg = averages.get(loop.getTime()); if (avg != null) { count++; sum += avg; } loop.add(Calendar.DAY_OF_MONTH, -1); } if (count > 0) { final double average = (sum / 100.0d) / (double) count; movingAverage.put(current.getTime(), average); } current.add(Calendar.DAY_OF_MONTH, -1); } while (current.getTime().compareTo(earliest) >= 0); final TimeSeries result = new TimeSeries(name); for (Map.Entry<Date, Double> entry : movingAverage.entrySet()) { result.add(new Day(entry.getKey()), entry.getValue()); } return result; }
From source file:org.jfree.data.time.junit.TimeSeriesTest.java
/** * Tests the equals method.//from w w w. j ava 2 s . c o m */ 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:org.jfree.data.time.TimeSeriesCollectionTest.java
/** * A test to cover bug 3445507.//from w w w. j ava2 s . co m */ @Test public void testBug3445507() { TimeSeries s1 = new TimeSeries("S1"); s1.add(new Year(2011), null); s1.add(new Year(2012), null); TimeSeries s2 = new TimeSeries("S2"); s2.add(new Year(2011), 5.0); s2.add(new Year(2012), 6.0); TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(s1); dataset.addSeries(s2); List keys = new ArrayList(); keys.add("S1"); keys.add("S2"); Range r = dataset.getRangeBounds(keys, new Range(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY), false); assertEquals(5.0, r.getLowerBound(), EPSILON); assertEquals(6.0, r.getUpperBound(), EPSILON); }
From source file:gov.llnl.lc.infiniband.opensm.plugin.gui.chart.PortCounterPlotWorker.java
private XYDataset createDeltaDataset(OSM_FabricDeltaCollection deltaHistory, PortCounterName pcn, String seriesName) {/*from ww w .ja v a 2 s . c o m*/ TimeSeries series = new TimeSeries(seriesName); // iterate through the collection, and build up a time series for (int j = 0; j < deltaHistory.getSize(); j++) { OSM_FabricDelta delta = deltaHistory.getOSM_FabricDelta(j); // find the desired port counter, in this instance LinkedHashMap<String, PFM_PortChange> pcL = delta.getPortChanges(); PFM_PortChange pC = pcL.get(OSM_Port.getOSM_PortKey(Port)); long lValue = pC.getDelta_port_counter(pcn); // correct for missing time periods int deltaSeconds = delta.getDeltaSeconds(); long sweepPeriod = delta.getFabric2().getPerfMgrSweepSecs(); if (sweepPeriod < deltaSeconds) { // graph is reported as counts per period, so if the period is too long, interpolate lValue *= sweepPeriod; lValue /= deltaSeconds; } TimeStamp ts = pC.getCounterTimeStamp(); RegularTimePeriod ms = new FixedMillisecond(ts.getTimeInMillis()); series.add(ms, (double) lValue); } TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(series); return dataset; }
From source file:com.freedomotic.jfrontend.extras.GraphPanel.java
private void createChart(UsageDataFrame points, String title) { series = new TimeSeries(title); for (UsageData d : points.getData()) { Date resultdate = d.getDateTime(); Millisecond ms_read = new Millisecond(resultdate); int poweredValue = -1; if (d.getObjBehavior().equalsIgnoreCase("powered")) { poweredValue = d.getObjValue().equalsIgnoreCase("true") ? 1 : 0; } else if (d.getObjBehavior().equalsIgnoreCase("brigthness")) { try { poweredValue = Integer.parseInt(d.getObjValue()); } catch (NumberFormatException ex) { poweredValue = -1;/*from w w w .j a v a2 s . com*/ } } series.addOrUpdate(ms_read, poweredValue); } XYDataset xyDataset = new TimeSeriesCollection(series); chart = ChartFactory.createTimeSeriesChart("Chart", "TIME", "VALUE", xyDataset, true, // legend true, // tooltips false // urls ); chart.setAntiAlias(true); // Set plot styles XYPlot plot = (XYPlot) chart.getPlot(); plot.setBackgroundPaint(Color.lightGray); plot.setDomainGridlinePaint(Color.white); plot.setRangeGridlinePaint(Color.white); plot.setAxisOffset(new RectangleInsets(2.0, 2.0, 2.0, 2.0)); // Set series line styles plot.setRenderer(new XYStepRenderer()); XYItemRenderer r = plot.getRenderer(); if (r instanceof XYLineAndShapeRenderer) { XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r; renderer.setShapesVisible(true); renderer.setShapesFilled(true); } // Set date axis style DateAxis axis = (DateAxis) plot.getDomainAxis(); String formatString = "MM-dd HH"; DateTickUnitType dtut = DateTickUnitType.HOUR; if (jComboGranularity.getSelectedItem().equals("Year")) { formatString = "yyyy"; dtut = DateTickUnitType.YEAR; } else if (jComboGranularity.getSelectedItem().equals("Month")) { axis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM")); dtut = DateTickUnitType.MONTH; } else if (jComboGranularity.getSelectedItem().equals("Day")) { axis.setDateFormatOverride(new SimpleDateFormat("MM-dd")); dtut = DateTickUnitType.DAY; } else if (jComboGranularity.getSelectedItem().equals("Minute")) { formatString = "MM-dd HH:mm"; dtut = DateTickUnitType.MINUTE; } else if (jComboGranularity.getSelectedItem().equals("Second")) { formatString = "HH:mm:SS"; dtut = DateTickUnitType.SECOND; } DateFormat formatter = new SimpleDateFormat(formatString); DateTickUnit unit = new DateTickUnit(dtut, 1, formatter); axis.setTickUnit(unit); ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(800, 500)); graphPanel.removeAll(); graphPanel.add(chartPanel); }
From source file:wsattacker.plugin.dos.dosExtension.chart.ChartObject.java
private IntervalXYDataset createDatasetNumberRequestsUntampered() { Date currentDate;//from ww w . ja v a 2s . c o m long currentMsTs; final TimeSeries series = new TimeSeries("Sent Untampered Requests per Second"); if (model.getMapLogEntryIntervalUntampered() != null) { for (Map.Entry<Integer, LogEntryInterval> log : model.getMapLogEntryIntervalUntampered().entrySet()) { // Create TS from model.startTime and log.getIntervalNumber(); currentMsTs = model.getTsAttackStart() + log.getValue().getIntervalNumber(); currentDate = new Date(currentMsTs); series.add(new Second(currentDate), (log.getValue().getNumberRequests())); } } final TimeSeriesCollection dataset = new TimeSeriesCollection(series); dataset.setXPosition(TimePeriodAnchor.MIDDLE); return dataset; }
From source file:de.tor.tribes.ui.views.DSWorkbenchStatsFrame.java
public void updateChart(List<TribeStatsElement> pElems) { chart = null;/*from w ww . j a va 2s . co m*/ startPointer = null; endPointer = null; int idx = jViewSelectionBox.getSelectedIndex(); if (idx == 0) { TimeSeriesCollection pointsDataset = new TimeSeriesCollection(); for (TribeStatsElement elem : pElems) { TimeSeries pointSeries = new TimeSeries("Punkte (" + elem.getTribe().getName() + ")"); // TimeSeries pointSeries2 = new TimeSeries("Punkte2 (" + elem.getTribe().getName() + ")"); Long[] timestamps = elem.getTimestamps(); Long[] points = elem.getPoints(); for (int i = 0; i < timestamps.length; i++) { pointSeries.add(new Second(new Date(timestamps[i])), points[i]); } pointsDataset.addSeries(pointSeries); } addDataset("Punkte", pointsDataset); } else if (idx == 1) { TimeSeriesCollection rankDataset = new TimeSeriesCollection(); for (TribeStatsElement elem : pElems) { TimeSeries rankSeries = new TimeSeries("Rang (" + elem.getTribe().getName() + ")"); Long[] timestamps = elem.getTimestamps(); Integer[] ranks = elem.getRanks(); for (int i = 0; i < timestamps.length; i++) { rankSeries.add(new Second(new Date(timestamps[i])), ranks[i]); } rankDataset.addSeries(rankSeries); } addDataset("Rang", rankDataset); } else if (idx == 2) { TimeSeriesCollection villageDataset = new TimeSeriesCollection(); for (TribeStatsElement elem : pElems) { TimeSeries villageSeries = new TimeSeries("Drfer (" + elem.getTribe().getName() + ")"); Long[] timestamps = elem.getTimestamps(); Short[] villages = elem.getVillages(); for (int i = 0; i < timestamps.length; i++) { villageSeries.add(new Second(new Date(timestamps[i])), villages[i]); } villageDataset.addSeries(villageSeries); } addDataset("Drfer", villageDataset); } else if (idx == 3) { TimeSeriesCollection killsOffDataset = new TimeSeriesCollection(); for (TribeStatsElement elem : pElems) { TimeSeries bashOffSeries = new TimeSeries("Kills (Off) (" + elem.getTribe().getName() + ")"); Long[] timestamps = elem.getTimestamps(); Long[] bashOff = elem.getBashOffPoints(); for (int i = 0; i < timestamps.length; i++) { bashOffSeries.add(new Second(new Date(timestamps[i])), bashOff[i]); } killsOffDataset.addSeries(bashOffSeries); } addDataset("Kills (Off)", killsOffDataset); } else if (idx == 4) { TimeSeriesCollection rankOffDataset = new TimeSeriesCollection(); for (TribeStatsElement elem : pElems) { TimeSeries rankOffSeries = new TimeSeries("Rang (Off) (" + elem.getTribe().getName() + ")"); Long[] timestamps = elem.getTimestamps(); Short[] rankOff = elem.getBashOffRank(); for (int i = 0; i < timestamps.length; i++) { rankOffSeries.add(new Second(new Date(timestamps[i])), rankOff[i]); } rankOffDataset.addSeries(rankOffSeries); } addDataset("Rang (Off)", rankOffDataset); } else if (idx == 5) { TimeSeriesCollection killsDefDataset = new TimeSeriesCollection(); for (TribeStatsElement elem : pElems) { TimeSeries bashDefSeries = new TimeSeries("Kills (Def) (" + elem.getTribe().getName() + ")"); Long[] timestamps = elem.getTimestamps(); Long[] bashDef = elem.getBashDefPoints(); for (int i = 0; i < timestamps.length; i++) { bashDefSeries.add(new Second(new Date(timestamps[i])), bashDef[i]); } killsDefDataset.addSeries(bashDefSeries); } addDataset("Kills (Def)", killsDefDataset); } else if (idx == 6) { TimeSeriesCollection rankDefDataset = new TimeSeriesCollection(); for (TribeStatsElement elem : pElems) { TimeSeries rankDefSeries = new TimeSeries("Rang (Def) (" + elem.getTribe().getName() + ")"); Long[] timestamps = elem.getTimestamps(); Short[] rankDef = elem.getBashDefRank(); for (int i = 0; i < timestamps.length; i++) { rankDefSeries.add(new Second(new Date(timestamps[i])), rankDef[i]); } rankDefDataset.addSeries(rankDefSeries); } addDataset("Rang (Def)", rankDefDataset); } jChartPanel.removeAll(); theChartPanel = new ChartPanel(chart); theChartPanel.setDisplayToolTips(true); theChartPanel.setMouseWheelEnabled(true); jChartPanel.add(theChartPanel); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { jChartPanel.updateUI(); } }); }
From source file:ch.algotrader.client.chart.ChartTab.java
private void initTimeSeries(int datasetNumber, XYDataset dataset, SeriesDefinitionVO seriesDefinition) { IndicatorDefinitionVO indicatorDefinition = (IndicatorDefinitionVO) seriesDefinition; TimeSeriesCollection timeSeriesCollection = (TimeSeriesCollection) dataset; // create the TimeSeries TimeSeries series = new TimeSeries(indicatorDefinition.getLabel()); timeSeriesCollection.addSeries(series); this.indicators.put(indicatorDefinition.getName(), series); // get the seriesNumber & color final int seriesNumber = timeSeriesCollection.getSeriesCount() - 1; // configure the renderer final XYItemRenderer renderer = getPlot().getRenderer(datasetNumber); renderer.setSeriesPaint(seriesNumber, getColor(indicatorDefinition.getColor())); renderer.setSeriesVisible(seriesNumber, seriesDefinition.isSelected()); renderer.setBaseToolTipGenerator(StandardXYToolTipGenerator.getTimeSeriesInstance()); if (seriesDefinition.isDashed()) { renderer.setSeriesStroke(seriesNumber, new BasicStroke(0.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, new float[] { 5.0f }, 0.0f)); } else {/*from w w w .j av a 2s.c o m*/ renderer.setSeriesStroke(seriesNumber, new BasicStroke(0.5f)); } // add the menu item JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem(seriesDefinition.getLabel()); menuItem.setSelected(seriesDefinition.isSelected()); menuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { resetAxis(); renderer.setSeriesVisible(seriesNumber, ((JCheckBoxMenuItem) e.getSource()).isSelected()); initAxis(); } }); this.getPopupMenu().add(menuItem); }
From source file:org.jfree.data.time.TimeSeriesCollectionTest.java
/** * Some checks for the getRangeBounds() method. *//* w ww. ja va2 s . co m*/ @Test public void testGetRangeBounds() { TimeSeriesCollection dataset = new TimeSeriesCollection(); // when the dataset contains no series, we expect the range to be null assertNull(dataset.getRangeBounds(false)); assertNull(dataset.getRangeBounds(true)); // when the dataset contains one or more series, but those series // contain no items, we still expect the range to be null TimeSeries s1 = new TimeSeries("S1"); dataset.addSeries(s1); assertNull(dataset.getRangeBounds(false)); assertNull(dataset.getRangeBounds(true)); // tests with values s1.add(new Year(2012), 1.0); assertEquals(new Range(1.0, 1.0), dataset.getRangeBounds(false)); assertEquals(new Range(1.0, 1.0), dataset.getRangeBounds(true)); s1.add(new Year(2013), -1.0); assertEquals(new Range(-1.0, 1.0), dataset.getRangeBounds(false)); assertEquals(new Range(-1.0, 1.0), dataset.getRangeBounds(true)); s1.add(new Year(2014), null); assertEquals(new Range(-1.0, 1.0), dataset.getRangeBounds(false)); assertEquals(new Range(-1.0, 1.0), dataset.getRangeBounds(true)); // adding a second series TimeSeries s2 = new TimeSeries("S2"); dataset.addSeries(s2); assertEquals(new Range(-1.0, 1.0), dataset.getRangeBounds(false)); assertEquals(new Range(-1.0, 1.0), dataset.getRangeBounds(true)); s2.add(new Year(2014), 5.0); assertEquals(new Range(-1.0, 5.0), dataset.getRangeBounds(false)); assertEquals(new Range(-1.0, 5.0), dataset.getRangeBounds(true)); dataset.removeAllSeries(); assertNull(dataset.getRangeBounds(false)); assertNull(dataset.getRangeBounds(true)); s1 = new TimeSeries("s1"); s2 = new TimeSeries("s2"); dataset.addSeries(s1); dataset.addSeries(s2); assertNull(dataset.getRangeBounds(false)); assertNull(dataset.getRangeBounds(true)); s2.add(new Year(2014), 100.0); assertEquals(new Range(100.0, 100.0), dataset.getRangeBounds(false)); assertEquals(new Range(100.0, 100.0), dataset.getRangeBounds(true)); }
From source file:wsattacker.plugin.dos.dosExtension.chart.ChartObject.java
private IntervalXYDataset createDatasetNumberRequestsTampered() { Date currentDate;//from w w w . j a v a 2 s. c o m long currentMsTs; final TimeSeries series = new TimeSeries("Sent Tampered Requests per Second"); if (model.getMapLogEntryIntervalTampered() != null) { for (Map.Entry<Integer, LogEntryInterval> log : model.getMapLogEntryIntervalTampered().entrySet()) { // Create TS from model.startTime and log.getIntervalNumber(); currentMsTs = model.getTsAttackStart() + log.getValue().getIntervalNumber(); currentDate = new Date(currentMsTs); series.add(new Second(currentDate), (log.getValue().getNumberRequests())); } } final TimeSeriesCollection dataset = new TimeSeriesCollection(series); dataset.setXPosition(TimePeriodAnchor.MIDDLE); return dataset; }