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, Class timePeriodClass) 

Source Link

Document

Creates a new (empty) time series with the specified name and class of RegularTimePeriod .

Usage

From source file:org.madsonic.controller.StatusChartController.java

public synchronized ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
        throws Exception {
    String type = request.getParameter("type");
    int index = Integer.parseInt(request.getParameter("index"));

    List<TransferStatus> statuses = Collections.emptyList();
    if ("stream".equals(type)) {
        statuses = statusService.getAllStreamStatuses();
    } else if ("download".equals(type)) {
        statuses = statusService.getAllDownloadStatuses();
    } else if ("upload".equals(type)) {
        statuses = statusService.getAllUploadStatuses();
    }/*from  w ww  .j a  va 2s.  c o  m*/

    if (index < 0 || index >= statuses.size()) {
        return null;
    }
    TransferStatus status = statuses.get(index);

    TimeSeries series = new TimeSeries("Kbps", Millisecond.class);
    TransferStatus.SampleHistory history = status.getHistory();
    long to = System.currentTimeMillis();
    long from = to - status.getHistoryLengthMillis();
    Range range = new DateRange(from, to);

    if (!history.isEmpty()) {

        TransferStatus.Sample previous = history.get(0);

        for (int i = 1; i < history.size(); i++) {
            TransferStatus.Sample sample = history.get(i);

            long elapsedTimeMilis = sample.getTimestamp() - previous.getTimestamp();
            long bytesStreamed = Math.max(0L, sample.getBytesTransfered() - previous.getBytesTransfered());

            double kbps = (8.0 * bytesStreamed / 1024.0) / (elapsedTimeMilis / 1000.0);
            series.addOrUpdate(new Millisecond(new Date(sample.getTimestamp())), kbps);

            previous = sample;
        }
    }

    // Compute moving average.
    series = MovingAverage.createMovingAverage(series, "Kbps", 20000, 5000);

    // Find min and max values.
    double min = 100;
    double max = 250;
    for (Object obj : series.getItems()) {
        TimeSeriesDataItem item = (TimeSeriesDataItem) obj;
        double value = item.getValue().doubleValue();
        if (item.getPeriod().getFirstMillisecond() > from) {
            min = Math.min(min, value);
            max = Math.max(max, value);
        }
    }

    // Add 10% to max value.
    max *= 1.1D;

    // Subtract 10% from min value.
    min *= 0.9D;

    TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(series);
    JFreeChart chart = ChartFactory.createTimeSeriesChart(null, null, null, dataset, false, false, false);
    XYPlot plot = (XYPlot) chart.getPlot();

    plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
    Paint background = new GradientPaint(0, 0, Color.lightGray, 0, IMAGE_HEIGHT, Color.white);
    plot.setBackgroundPaint(background);

    XYItemRenderer renderer = plot.getRendererForDataset(dataset);
    renderer.setSeriesPaint(0, Color.gray.darker());
    renderer.setSeriesStroke(0, new BasicStroke(2f));

    // Set theme-specific colors.
    Color bgColor = getBackground(request);
    Color fgColor = getForeground(request);

    chart.setBackgroundPaint(bgColor);

    ValueAxis domainAxis = plot.getDomainAxis();
    domainAxis.setRange(range);
    domainAxis.setTickLabelPaint(fgColor);
    domainAxis.setTickMarkPaint(fgColor);
    domainAxis.setAxisLinePaint(fgColor);

    ValueAxis rangeAxis = plot.getRangeAxis();
    rangeAxis.setRange(new Range(min, max));
    rangeAxis.setTickLabelPaint(fgColor);
    rangeAxis.setTickMarkPaint(fgColor);
    rangeAxis.setAxisLinePaint(fgColor);

    ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, IMAGE_WIDTH, IMAGE_HEIGHT);

    return null;
}

From source file:net.sourceforge.subsonic.controller.StatusChartController.java

public synchronized ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
        throws Exception {
    String type = request.getParameter("type");
    int index = Integer.parseInt(request.getParameter("index"));

    List<TransferStatus> statuses = Collections.emptyList();
    if ("stream".equals(type)) {
        statuses = statusService.getAllStreamStatuses();
    } else if ("download".equals(type)) {
        statuses = statusService.getAllDownloadStatuses();
    } else if ("upload".equals(type)) {
        statuses = statusService.getAllUploadStatuses();
    }//from w ww.  j  a  v  a 2s  .c o  m

    if (index < 0 || index >= statuses.size()) {
        return null;
    }
    TransferStatus status = statuses.get(index);

    TimeSeries series = new TimeSeries("Kbps", Millisecond.class);
    TransferStatus.SampleHistory history = status.getHistory();
    long to = System.currentTimeMillis();
    long from = to - status.getHistoryLengthMillis();
    Range range = new DateRange(from, to);

    if (!history.isEmpty()) {

        TransferStatus.Sample previous = history.get(0);

        for (int i = 1; i < history.size(); i++) {
            TransferStatus.Sample sample = history.get(i);

            long elapsedTimeMilis = sample.getTimestamp() - previous.getTimestamp();
            long bytesStreamed = Math.max(0L, sample.getBytesTransfered() - previous.getBytesTransfered());

            double kbps = (8.0 * bytesStreamed / 1024.0) / (elapsedTimeMilis / 1000.0);
            series.addOrUpdate(new Millisecond(new Date(sample.getTimestamp())), kbps);

            previous = sample;
        }
    }

    // Compute moving average.
    series = MovingAverage.createMovingAverage(series, "Kbps", 20000, 5000);

    // Find min and max values.
    double min = 100;
    double max = 250;
    for (Object obj : series.getItems()) {
        TimeSeriesDataItem item = (TimeSeriesDataItem) obj;
        double value = item.getValue().doubleValue();
        if (item.getPeriod().getFirstMillisecond() > from) {
            min = Math.min(min, value);
            max = Math.max(max, value);
        }
    }

    // Add 10% to max value.
    max *= 1.1D;

    // Subtract 10% from min value.
    min *= 0.9D;

    TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(series);
    JFreeChart chart = ChartFactory.createTimeSeriesChart(null, null, null, dataset, false, false, false);
    XYPlot plot = (XYPlot) chart.getPlot();

    plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
    Paint background = new GradientPaint(0, 0, Color.lightGray, 0, IMAGE_HEIGHT, Color.white);
    plot.setBackgroundPaint(background);

    XYItemRenderer renderer = plot.getRendererForDataset(dataset);
    renderer.setSeriesPaint(0, Color.blue.darker());
    renderer.setSeriesStroke(0, new BasicStroke(2f));

    // Set theme-specific colors.
    Color bgColor = getBackground(request);
    Color fgColor = getForeground(request);

    chart.setBackgroundPaint(bgColor);

    ValueAxis domainAxis = plot.getDomainAxis();
    domainAxis.setRange(range);
    domainAxis.setTickLabelPaint(fgColor);
    domainAxis.setTickMarkPaint(fgColor);
    domainAxis.setAxisLinePaint(fgColor);

    ValueAxis rangeAxis = plot.getRangeAxis();
    rangeAxis.setRange(new Range(min, max));
    rangeAxis.setTickLabelPaint(fgColor);
    rangeAxis.setTickMarkPaint(fgColor);
    rangeAxis.setAxisLinePaint(fgColor);

    ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, IMAGE_WIDTH, IMAGE_HEIGHT);

    return null;
}

From source file:org.jfree.chart.demo.TimeSeriesDemo2.java

/**
 * A demonstration application showing a quarterly time series containing a null value.
 *
 * @param title  the frame title./*  w  w w .j  a  v  a2  s . c om*/
 */
public TimeSeriesDemo2(final String title) {

    super(title);

    final TimeSeries series = new TimeSeries("Quarterly Data", Quarter.class);
    series.add(new Quarter(1, 2001), 500.2);
    series.add(new Quarter(2, 2001), 694.1);
    series.add(new Quarter(3, 2001), 734.4);
    series.add(new Quarter(4, 2001), 453.2);
    series.add(new Quarter(1, 2002), 500.2);
    series.add(new Quarter(2, 2002), null);
    series.add(new Quarter(3, 2002), 734.4);
    series.add(new Quarter(4, 2002), 453.2);
    final TimeSeriesCollection dataset = new TimeSeriesCollection(series);
    final JFreeChart chart = ChartFactory.createTimeSeriesChart("Time Series Demo 2", "Time", "Value", dataset,
            true, true, false);
    chart.getXYPlot().addRangeMarker(new ValueMarker(550.0));
    final Quarter q = new Quarter(2, 2002);
    chart.getXYPlot().addDomainMarker(new ValueMarker(q.getMiddleMillisecond()));
    final ChartPanel chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
    setContentPane(chartPanel);

}

From source file:arduinouno.TimeChartGenerator.java

/**
 * Constructs a new dynamic chart application.
 *
 * @param title the frame title.//  w w  w . j  av a 2 s  . c o m
 * @param theSerialLink
 * @param analogInputs
 */
public TimeChartGenerator(final String title, final SerialReader theSerialLink, Boolean[] analogInputs) {

    super(title);
    this.analogInputs = analogInputs;
    TimeSeriesCollection dataset = null, dataset0 = null, dataset1 = null, dataset2 = null, dataset3 = null,
            dataset4 = null, dataset5 = null;
    this.series = new TimeSeries("offset", Millisecond.class);

    //Serie de datos para el offset hacia la izquierda - (Magia)
    dataset = new TimeSeriesCollection(this.series);

    if (analogInputs[0]) {
        this.series0 = new TimeSeries("Read A0", Millisecond.class);
        //Serie de datos A0
        dataset0 = new TimeSeriesCollection(this.series0);
    }
    if (analogInputs[1]) {
        this.series1 = new TimeSeries("Read A1", Millisecond.class);
        //Serie de datos A1
        dataset1 = new TimeSeriesCollection(this.series1);
    }
    if (analogInputs[2]) {
        this.series2 = new TimeSeries("Read A2", Millisecond.class);
        //Serie de datos A2
        dataset2 = new TimeSeriesCollection(this.series2);
    }
    if (analogInputs[3]) {
        this.series3 = new TimeSeries("Read A3", Millisecond.class);
        //Serie de datos A3
        dataset3 = new TimeSeriesCollection(this.series3);
    }
    if (analogInputs[4]) {
        this.series4 = new TimeSeries("Read A4", Millisecond.class);
        //Serie de datos A4
        dataset4 = new TimeSeriesCollection(this.series4);
    }
    if (analogInputs[5]) {
        this.series5 = new TimeSeries("Read A5", Millisecond.class);
        //Serie de datos A5
        dataset5 = new TimeSeriesCollection(this.series5);
    }

    final JFreeChart chart = createChart(dataset, dataset0, dataset1, dataset2, dataset3, dataset4, dataset5);
    timer.setInitialDelay(1000);
    //Sets background color of chart
    chart.setBackgroundPaint(Color.LIGHT_GRAY);
    //Create Chartpanel for chart area
    chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new java.awt.Dimension(800, 500));
    timer.start();
    this.serialLink = theSerialLink;

}

From source file:old.MonitoringChart.java

private XYDataset createDataset() {
    cpuSeries = new TimeSeries("CPU Load", Millisecond.class);
    memorySeries = new TimeSeries("Memory Usage", Millisecond.class);
    diskSeries = new TimeSeries("Disk Usage", Millisecond.class);

    TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(cpuSeries);//www.java2s  . com
    dataset.addSeries(memorySeries);
    dataset.addSeries(diskSeries);

    return dataset;

}

From source file:net.sf.statcvs.output.xml.chart.TimeLineChart.java

void addTimeLine(TimeLine timeLine) {
    TimeSeries result = new TimeSeries(timeLine.getTitle(), Millisecond.class);
    Iterator it = timeLine.getDataPoints().iterator();
    while (it.hasNext()) {
        TimePoint timePoint = (TimePoint) it.next();
        result.add(new Millisecond(timePoint.getDate()), timePoint.getValue());
    }//from  w  w w .  jav  a  2 s.c om
    tsc.addSeries(result);
}

From source file:net.sf.clichart.chart.TimeSeriesChartBuilder.java

protected void initialiseSeriesColumn(String title) {
    TimeSeries timeSeries = new TimeSeries(title, Second.class);
    m_timeSeriesCollection.addSeries(timeSeries);
}

From source file:org.jfree.chart.demo.XYBarChartDemo2.java

/**
 * Constructs the demo application.//  w w  w.j  a v  a  2s.  co m
 *
 * @param title  the frame title.
 */
public XYBarChartDemo2(final String title) {

    super(title);

    // create a dataset...
    final TimeSeries series1 = new TimeSeries("Series 1", Day.class);
    series1.add(new Day(1, 1, 2003), 54.3);
    series1.add(new Day(2, 1, 2003), 20.3);
    series1.add(new Day(3, 1, 2003), 43.4);
    series1.add(new Day(4, 1, 2003), -12.0);

    final TimeSeries series2 = new TimeSeries("Series 2", Day.class);
    series2.add(new Day(1, 1, 2003), 8.0);
    series2.add(new Day(2, 1, 2003), 16.0);
    series2.add(new Day(3, 1, 2003), 21.0);
    series2.add(new Day(4, 1, 2003), 5.0);

    final TimeSeriesCollection data = new TimeSeriesCollection();
    data.setDomainIsPointsInTime(false);
    data.addSeries(series1);
    data.addSeries(series2);

    final JFreeChart chart = createChart(data);

    // add the chart to a panel...
    final ChartPanel chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new java.awt.Dimension(500, 300));
    setContentPane(chartPanel);

}

From source file:org.jfree.chart.demo.TimeSeriesDemo3.java

/**
 * A demonstration application showing a quarterly time series containing a null value.
 *
 * @param title  the frame title./*from  w ww .  j av a  2 s. co m*/
 */
public TimeSeriesDemo3(final String title) {

    super(title);

    final TimeSeries series1 = new TimeSeries("Series 1", Month.class);
    series1.add(new Month(1, 2002), 500.2);
    series1.add(new Month(2, 2002), 694.1);
    series1.add(new Month(3, 2002), 734.4);
    series1.add(new Month(4, 2002), 453.2);
    series1.add(new Month(5, 2002), 500.2);
    series1.add(new Month(6, 2002), 345.6);
    series1.add(new Month(7, 2002), 500.2);
    series1.add(new Month(8, 2002), 694.1);
    series1.add(new Month(9, 2002), 734.4);
    series1.add(new Month(10, 2002), 453.2);
    series1.add(new Month(11, 2002), 500.2);
    series1.add(new Month(12, 2002), 345.6);

    final TimeSeries series2 = new TimeSeries("Series 2", Month.class);
    series2.add(new Month(1, 2002), 234.1);
    series2.add(new Month(2, 2002), 623.7);
    series2.add(new Month(3, 2002), 642.5);
    series2.add(new Month(4, 2002), 651.4);
    series2.add(new Month(5, 2002), 643.5);
    series2.add(new Month(6, 2002), 785.6);
    series2.add(new Month(7, 2002), 234.1);
    series2.add(new Month(8, 2002), 623.7);
    series2.add(new Month(9, 2002), 642.5);
    series2.add(new Month(10, 2002), 651.4);
    series2.add(new Month(11, 2002), 643.5);
    series2.add(new Month(12, 2002), 785.6);

    final TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(series1);
    dataset.addSeries(series2);

    final JFreeChart chart = createChart(dataset);

    final ChartPanel chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
    setContentPane(chartPanel);

}

From source file:jfreeechart.DynamicDataDemo.java

/**
 * Constructs a new demonstration application.
 *
 * @param title  the frame title./*from  w  ww. ja va 2s. c  om*/
 */
public DynamicDataDemo(final String title) {

    super(title);
    this.series = new TimeSeries("Random Data", Millisecond.class);
    final TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);
    final JFreeChart chart = createChart(dataset);

    final ChartPanel chartPanel = new ChartPanel(chart);
    final JButton button = new JButton("Add New Data Item");
    button.setActionCommand("ADD_DATA");
    button.addActionListener(this);

    final JPanel content = new JPanel(new BorderLayout());
    content.add(chartPanel);
    content.add(button, BorderLayout.SOUTH);
    chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
    setContentPane(content);

}