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: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;
}