Example usage for org.jfree.data.time TimeSeriesCollection addSeries

List of usage examples for org.jfree.data.time TimeSeriesCollection addSeries

Introduction

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

Prototype

public void addSeries(TimeSeries series) 

Source Link

Document

Adds a series to the collection and sends a DatasetChangeEvent to all registered listeners.

Usage

From source file:edu.unibonn.plotting.TimeSeriesPlotter_Sensors.java

private XYDataset createDataset(ArrayList<Cluster_KMeans> clusters, LocalDateTime from) {
    final TimeSeriesCollection dataset = new TimeSeriesCollection();

    for (int i = 0; i < clusters.size(); i++) {
        Cluster_KMeans current_cluster = clusters.get(i);
        ArrayList<Sensor> member_time_series = current_cluster.getMembership();

        for (Iterator iterator = member_time_series.iterator(); iterator.hasNext();) {
            final TimeSeries s1 = new TimeSeries("Cluster_" + current_cluster.getCluster_id(), Hour.class);

            Sensor current_series = (Sensor) iterator.next();

            for (int j = 0; j < current_series.getDimensions(); j++) {
                LocalDateTime current_record_time = current_series.getInitial_record_time().plusHours(j);
                s1.add(new Hour(current_record_time.getHour(), current_record_time.getDayOfMonth(),
                        current_record_time.getMonthValue(), current_record_time.getYear()),
                        current_series.getMeasurement(j));
            }/*  w w w. j  a v  a2  s .c o  m*/

            dataset.addSeries(s1);
        }
    }

    dataset.setDomainIsPointsInTime(true);

    return dataset;
}

From source file:edu.unibonn.kmeans.mapreduce.plotting.TimeSeriesPlotter_KMeans.java

private XYDataset createDataset(ArrayList<Sensor> sensors) {
    final TimeSeriesCollection dataset = new TimeSeriesCollection();

    for (int i = 0; i < sensors.size(); i++)
    //for (int i = 0; i < 100; i++)
    {//from  w w w.  ja v  a2 s  . c  o m
        Sensor current_sensor = sensors.get(i);
        ArrayList<Measurement> current_measurements = current_sensor.getMeasurements();

        final TimeSeries s1 = new TimeSeries("Sensor " + i, Hour.class);

        for (int j = 0; j < current_measurements.size(); j++) {
            Measurement current_measurement = current_measurements.get(j);

            LocalDateTime current_time = current_measurement.getRecord_time();

            s1.add(new Hour(current_time.getHour(), current_time.getDayOfMonth(), current_time.getMonthValue(),
                    current_time.getYear()), current_measurement.getErlang());
        }

        dataset.addSeries(s1);
    }

    dataset.setDomainIsPointsInTime(true);

    return dataset;
}

From source file:org.posterita.businesslogic.performanceanalysis.CustomPOSReportManager.java

public static TimeSeriesChart generateTimeSeriesChart(Properties ctx, String title, String subtitle,
        int account_id, Timestamp fromDate, Timestamp toDate, String salesGroup, String priceQtyFilter)
        throws OperationException {
    TimeSeriesChart timeSeriesChart = new TimeSeriesChart();
    timeSeriesChart.setTitle(title);//from   w ww. ja  va 2 s  .  co  m
    timeSeriesChart.setSubtitle(subtitle);
    timeSeriesChart.setShowShapes(true);
    //timeSeriesChart.getDataSetFromSQL(timeSeriesChartSQL);

    String timeSeriesChartSQL = SalesAnalysisReportManager.getTimeSeriesDataSetSQL(ctx, account_id, fromDate,
            toDate, salesGroup);
    ArrayList<Object[]> list = ReportManager.getReportData(ctx, timeSeriesChartSQL, false);

    TimeSeriesCollection dataset = new TimeSeriesCollection();
    TimeSeries series = null;
    String yLabel = null;

    String seriesName = null;
    String date = null;
    BigDecimal price = null;
    String[] s = null;
    int day, month, year;

    for (Object[] data : list) {
        seriesName = (String) data[0];
        date = (String) data[1];
        price = (BigDecimal) data[2];
        s = date.split("-");

        if (s.length != 3)
            throw new OperationException("Unable to generate timeseries. "
                    + "Cause:Invalid date format, the date returned should have the following format 'DD-MM-YYYY'");

        SimpleDateFormat sdf = new SimpleDateFormat();
        Calendar cal = Calendar.getInstance();
        Date d = null;

        try {
            sdf.applyPattern("dd-MM-yyyy");
            d = sdf.parse(date);
        } catch (ParseException e1) {
            try {
                sdf.applyPattern("dd-MMM-yyyy");
                d = sdf.parse(date);
            } catch (ParseException e) {
                throw new OperationException("Unable to generate timeseries. "
                        + "Cause:Invalid date format, the date returned should have one of the following formats 'DD-MM-YYYY' or 'DD-MMM-YYYY'",
                        e);
            }
        }

        cal.setTime(d);

        day = cal.get(Calendar.DATE);
        month = cal.get(Calendar.MONTH) + 1;
        year = cal.get(Calendar.YEAR);

        series = dataset.getSeries(seriesName);

        if (series == null) {
            series = new TimeSeries(seriesName, Day.class);
            series.add(new Day(day, month, year), price);

            dataset.addSeries(series);
        } else {
            series.add(new Day(day, month, year), price);
        } //if   

    } //for

    if (priceQtyFilter.equalsIgnoreCase(Constants.PRICE)) {
        //against price
        String currency = POSTerminalManager.getDefaultSalesCurrency(ctx).getCurSymbol();
        yLabel = "Value (" + currency + ")";
    } else {
        yLabel = "Quantity";
    }

    timeSeriesChart.setYLabel(yLabel);
    timeSeriesChart.setDataset(dataset);
    XYPlot plot = (XYPlot) timeSeriesChart.getChart().getPlot();
    DateAxis axis = (DateAxis) plot.getDomainAxis();

    SimpleDateFormat sdf = new SimpleDateFormat(TimestampConvertor.DEFAULT_DATE_PATTERN1);

    axis.setRange(fromDate, toDate);
    //axis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH,1,new SimpleDateFormat("MMM-yyyy")));        
    timeSeriesChart.getChart().setBackgroundPaint(Color.white);

    return timeSeriesChart;
}

From source file:com.igalia.java.zk.components.JFreeChartEngine.java

/**
 * transfer a XYModel into JFreeChart TimeSeriesCollection.
 *///from  w  ww .  j a v  a 2s . c om
private XYDataset XYModelToTimeDataset(XYModel model, Chart chart) {
    TimeZone tz = chart.getTimeZone();
    if (tz == null)
        tz = TimeZones.getCurrent();
    String p = chart.getPeriod();
    if (p == null)
        p = Chart.MILLISECOND;
    Class pclass = (Class) _periodMap.get(p);
    if (pclass == null) {
        throw new UiException("Unsupported period for Time Series chart: " + p);
    }
    final TimeSeriesCollection dataset = new TimeSeriesCollection(tz);

    for (final Iterator it = model.getSeries().iterator(); it.hasNext();) {
        final Comparable series = (Comparable) it.next();
        final org.jfree.data.time.TimeSeries tser = new org.jfree.data.time.TimeSeries(series);
        //new org.jfree.data.time.TimeSeries(series, pclass); //deprecated since JFreeChart 10.0.13
        final int size = model.getDataCount(series);
        for (int j = 0; j < size; ++j) {
            final RegularTimePeriod period = RegularTimePeriod.createInstance(pclass,
                    new Date(model.getX(series, j).longValue()), tz);
            tser.addOrUpdate(period, model.getY(series, j));
        }
        dataset.addSeries(tser);
    }
    return dataset;
}

From source file:org.griphyn.vdl.karajan.monitor.monitors.swing.GraphPanel.java

private void addSeries(Series<?> series) {
    Unit unit = series.getUnit();//from w  w w.ja  va  2s .c o  m
    XYPlot plot = chart.getXYPlot();
    Integer datasetIndex = datasetMapping.get(unit);
    TimeSeriesCollection col;
    if (datasetIndex == null) {
        col = new TimeSeriesCollection();
        int nextIndex = getNextDatasetIndex(plot);
        datasetMapping.put(unit, nextIndex);
        plot.setDataset(nextIndex, col);
        plot.setRenderer(nextIndex, new XYLineAndShapeRenderer(true, false));

        NumberAxis axis = new AutoNumberAxis(unit);
        plot.setRangeAxis(nextIndex, axis);
        plot.mapDatasetToRangeAxis(nextIndex, nextIndex);

        seriesMapping.put(unit, new ArrayList<String>());
    } else {
        col = (TimeSeriesCollection) plot.getDataset(datasetIndex);
    }
    TimeSeries ts = new SeriesWrapper(series, sampler);
    seriesMapping.get(unit).add(series.getKey());
    col.addSeries(ts);
    setColor(series.getKey(), palette.allocate());
}

From source file:org.apache.phoenix.pherf.result.impl.ImageResultHandler.java

@Override
public synchronized void write(Result result) throws Exception {
    TimeSeriesCollection timeSeriesCollection = new TimeSeriesCollection();
    int rowCount = 0;
    int maxLegendCount = 20;
    int chartDimension = 1100;

    ResultValue<DataModelResult> resultValue = result.getResultValues().get(0);
    DataModelResult dataModelResult = resultValue.getResultValue();

    for (ScenarioResult scenarioResult : dataModelResult.getScenarioResult()) {
        for (QuerySetResult querySetResult : scenarioResult.getQuerySetResult()) {
            for (QueryResult queryResult : querySetResult.getQueryResults()) {
                for (ThreadTime tt : queryResult.getThreadTimes()) {
                    TimeSeries timeSeries = new TimeSeries(
                            queryResult.getStatement() + " :: " + tt.getThreadName());
                    rowCount++;//from ww  w  .ja v  a2 s  . c o m
                    synchronized (tt.getRunTimesInMs()) {
                        for (RunTime rt : tt.getRunTimesInMs()) {
                            if (rt.getStartTime() != null) {
                                timeSeries.add(new Millisecond(rt.getStartTime()), rt.getElapsedDurationInMs());
                            }
                        }
                    }
                    timeSeriesCollection.addSeries(timeSeries);
                }
            }
        }
    }
    boolean legend = rowCount > maxLegendCount ? false : true;
    JFreeChart chart = ChartFactory.createTimeSeriesChart(dataModelResult.getName(), "Time", "Query Time (ms)",
            timeSeriesCollection, legend, true, false);
    StandardXYItemRenderer renderer = new StandardXYItemRenderer(StandardXYItemRenderer.SHAPES_AND_LINES);
    chart.getXYPlot().setRenderer(renderer);
    chart.getXYPlot().setBackgroundPaint(Color.WHITE);
    chart.getXYPlot().setRangeGridlinePaint(Color.BLACK);
    for (int i = 0; i < rowCount; i++) {
        chart.getXYPlot().getRenderer().setSeriesStroke(i, new BasicStroke(3f));
    }
    try {
        ChartUtilities.saveChartAsJPEG(new File(resultFileName), chart, chartDimension, chartDimension);
    } catch (IOException e) {
        e.printStackTrace();
    }

}

From source file:org.jivesoftware.openfire.reporting.graph.GraphEngine.java

private XYDataset populateData(String key, Statistic[] def, long startTime, long endTime, int dataPoints) {
    double[][] values = statsViewer.getData(key, startTime, endTime, dataPoints);
    long timePeriod = endTime - startTime;
    TimeSeries[] series = new TimeSeries[values.length];
    TimeSeriesCollection dataSet = new TimeSeriesCollection();

    for (int d = 0; d < values.length; d++) {
        series[d] = new TimeSeries(def[d].getName(), getTimePeriodClass(timePeriod));
        Statistic.Type type = def[d].getStatType();

        long interval = timePeriod / values[d].length;
        for (int i = 0; i < values[d].length; i++) {
            series[d].addOrUpdate(//  w  ww  .j  a v  a  2  s  .  com
                    getTimePeriod(timePeriod, new Date(startTime + (i * interval)), JiveGlobals.getTimeZone()),
                    cleanData(type, values[d][i]));
        }
        dataSet.addSeries(series[d]);
    }
    return dataSet;
}

From source file:ucar.unidata.idv.control.chart.TimeSeriesChart.java

/**
 * Add the series/* ww w .  j  a v a 2  s .  com*/
 *
 *
 * @param series The data
 * @param lineState describes how to draw the line
 * @param paramIdx which parameter
 * @param renderer renderer
 * @param rangeVisible  do we show range axis
 * @param addAxis include the axis
 *
 * @return the newly created range axis
 */
protected Axis addSeries(TimeSeries series, LineState lineState, int paramIdx, XYItemRenderer renderer,
        boolean rangeVisible, boolean addAxis) {

    if (series instanceof MyTimeSeries) {
        ((MyTimeSeries) series).finish();
    }

    if (addAxis && (lineState.getRange() != null)) {
        addRange(lineState.getRange().getMin(), lineState.getRange().getMax(),
                "Fixed range from: " + lineState.getName());
    }

    if (numberFormat == null) {
        numberFormat = new DecimalFormat() {
            public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition) {
                String s = control.getDisplayConventions().format(number);
                result.append(s);

                return result;
            }
        };

    }

    String name = lineState.getName();
    Unit unit = lineState.unit;
    TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.setDomainIsPointsInTime(true);
    dataset.addSeries(series);

    String axisLabel = lineState.getAxisLabel();
    if (axisLabel == null) {
        axisLabel = name + ((unit != null) ? " [" + unit + "]" : "");
    }
    NumberAxis rangeAxis;

    if (lineState.getUseLogarithmicRange() && false) {
        rangeAxis = new FixedWidthLogarithmicAxis(axisLabel);
    } else {
        rangeAxis = new FixedWidthNumberAxis(axisLabel);
        ((NumberAxis) rangeAxis).setAutoRangeIncludesZero(lineState.getRangeIncludesZero());
    }

    //For now lets use the default number formatting for the range
    //        rangeAxis.setNumberFormatOverride(numberFormat);

    rangeAxis.setVisible(rangeVisible);

    ucar.unidata.util.Range r = lineState.getRange();
    if (r != null) {
        rangeAxis.setRange(new org.jfree.data.Range(r.getMin(), r.getMax()));
    }

    if (renderer == null) {
        renderer = getRenderer(lineState, addAxis);
    }

    Paint c = lineState.getColor(paramIdx);
    rangeAxis.setLabelPaint(Color.black);
    renderer.setSeriesPaint(0, c);
    renderer.setSeriesStroke(0, lineState.getStroke());
    renderer.setSeriesVisibleInLegend(0, lineState.getVisibleInLegend());

    if (!lineState.getAxisVisible()) {
        rangeAxis.setVisible(false);
    } else {
        rangeAxis.setVisible(addAxis);
    }

    ChartHolder chartHolder = getChartHolder(lineState);

    AxisLocation side = null;
    if (rangeAxis.isVisible()) {
        if (lineState.getSide() == LineState.SIDE_UNDEFINED) {
            if (chartHolder.lastSide == AxisLocation.TOP_OR_LEFT) {
                side = AxisLocation.BOTTOM_OR_RIGHT;
            } else {
                side = AxisLocation.TOP_OR_LEFT;
            }
        } else if (lineState.getSide() == LineState.SIDE_LEFT) {
            side = AxisLocation.TOP_OR_LEFT;
        } else {
            side = AxisLocation.BOTTOM_OR_RIGHT;
        }
        chartHolder.lastSide = side;
    }

    synchronized (MUTEX) {
        chartHolder.add(dataset, rangeAxis, renderer, side);
    }

    return rangeAxis;
}

From source file:org.zaproxy.zap.extension.customFire.ScanProgressDialog.java

/**
 * //from  ww w  .j a  v a 2s  .com
 */
private void initialize() {
    this.setSize(new Dimension(580, 504));

    if (site != null) {

        this.setTitle("Scann Progress");

    }

    JTabbedPane tabbedPane = new JTabbedPane();
    JPanel tab1 = new JPanel();
    tab1.setLayout(new GridBagLayout());

    JPanel hostPanel = new JPanel();

    hostPanel.setLayout(new GridBagLayout());

    hostPanel.add(new JLabel("Host:"), LayoutHelper.getGBC(0, 0, 1, 0.4D));

    hostPanel.add(getHostSelect(), LayoutHelper.getGBC(1, 0, 1, 0.6D));

    tab1.add(hostPanel, LayoutHelper.getGBC(0, 0, 3, 1.0D, 0.0D));

    tab1.add(getJScrollPane(), LayoutHelper.getGBC(0, 1, 3, 1.0D, 1.0D));//*

    tab1.add(new JLabel(), LayoutHelper.getGBC(0, 1, 1, 1.0D, 0.0D)); // spacer
    tab1.add(getCloseButton(), LayoutHelper.getGBC(1, 2, 1, 0.0D, 0.0D));

    tab1.add(new JLabel(), LayoutHelper.getGBC(2, 1, 1, 1.0D, 0.0D)); // spacer

    tabbedPane.insertTab("Progress", null, tab1, null, 0);
    this.add(tabbedPane);

    int mins = extension.getScannerParam().getMaxChartTimeInMins();
    if (mins > 0) {
        // Treat zero mins as disabled

        JPanel tab2 = new JPanel();

        tab2.setLayout(new GridBagLayout());

        this.seriesTotal = new TimeSeries("TotalResponses"); // Name not shown, so no need to i18n
        final TimeSeriesCollection dataset = new TimeSeriesCollection(this.seriesTotal);

        this.series100 = new TimeSeries("1xx");
        this.series200 = new TimeSeries("2xx");
        this.series300 = new TimeSeries("3xx");
        this.series400 = new TimeSeries("4xx");
        this.series500 = new TimeSeries("5xx");

        this.seriesTotal.setMaximumItemAge(mins * 60);
        this.series100.setMaximumItemAge(mins * 60);
        this.series200.setMaximumItemAge(mins * 60);
        this.series300.setMaximumItemAge(mins * 60);
        this.series400.setMaximumItemAge(mins * 60);
        this.series500.setMaximumItemAge(mins * 60);

        dataset.addSeries(series100);
        dataset.addSeries(series200);
        dataset.addSeries(series300);
        dataset.addSeries(series400);
        dataset.addSeries(series500);

        chart = createChart(dataset);//*

        // Set up some vaguesly sensible colours
        chart.getXYPlot().getRenderer(0).setSeriesPaint(0, Color.BLACK); // Totals
        chart.getXYPlot().getRenderer(0).setSeriesPaint(1, Color.ORANGE); // 100: Info
        chart.getXYPlot().getRenderer(0).setSeriesPaint(2, Color.GREEN); // 200: OK
        chart.getXYPlot().getRenderer(0).setSeriesPaint(3, Color.BLUE); // 300: Info
        chart.getXYPlot().getRenderer(0).setSeriesPaint(4, Color.YELLOW); // 400: Bad req
        chart.getXYPlot().getRenderer(0).setSeriesPaint(5, Color.RED); // 500: Internal error

        chart.getXYPlot().getRenderer(0).setSeriesStroke(0, new BasicStroke(5.0f)); // Totals
        chart.getXYPlot().getRenderer(0).setSeriesStroke(0, new BasicStroke(3.0f)); // 100: Info
        chart.getXYPlot().getRenderer(0).setSeriesStroke(0, new BasicStroke(3.0f)); // 200: OK
        chart.getXYPlot().getRenderer(0).setSeriesStroke(0, new BasicStroke(3.0f)); // 300: Info
        chart.getXYPlot().getRenderer(0).setSeriesStroke(0, new BasicStroke(3.0f)); // 400: Bad req
        chart.getXYPlot().getRenderer(0).setSeriesStroke(0, new BasicStroke(3.0f)); // 500: Internal error

        final ChartPanel chartPanel = new ChartPanel(chart);

        tab2.add(chartPanel, LayoutHelper.getGBC(0, 0, 1, 1.0D, 1.0D));

        tabbedPane.insertTab("ResponseCharts", null, tab2, null, 1);

    }

    // Stop the updating thread when the window is closed
    this.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosed(WindowEvent e) {
            stopThread = true;
        }
    });

}

From source file:org.tolven.web.MenuAction.java

/**
  * Creates a dataset from menuData./*  w  ww . j  a v  a2s  .c  o m*/
  *
  * @return An XY dataset
  */
public XYDataset createDataset3(String path) {
    // Adjust the path to make this work
    MenuStructure msLab = getMenuLocal().findMenuStructure(getAccountId(), path);
    if (msLab == null)
        throw new IllegalArgumentException("Path not valid for this account");
    // Create a new path based on the matching id(s) from the called path
    // for example, if patient were specified in the input nodeValues and the new path has a patient node, then
    // it's pulled.
    MenuPath mdPath = new MenuPath(msLab.getPath(), getTargetMenuPath());
    //        TolvenLogger.info("dataset: Query from " + msLab.getPath() + " for requested path: " + getTargetMenuPath(), MenuAction.class);
    MenuQueryControl ctrl = new MenuQueryControl();
    ctrl.setLimit(5000); // TODO: This is a hard coded hard query limit that should be in a property or something
    ctrl.setMenuStructure(msLab);
    ctrl.setAccountUser(TolvenRequest.getInstance().getAccountUser());
    ctrl.setNow(getNow());
    ctrl.setOffset(0);
    ctrl.setOriginalTargetPath(mdPath);
    ctrl.setRequestedPath(mdPath);
    List<MenuData> menuData = getMenuLocal().findMenuData(ctrl);
    TimeSeries s1 = new TimeSeries("Peak Flow", TolvenHour.class);
    for (MenuData md : menuData) {
        TimeSeries sx;
        //            TolvenLogger.info("MD Item: " + md.getId(), MenuAction.class);
        String result = md.getString01().toLowerCase();
        if ("peak flow".equals(result) || "peakflow".equals(result)) {
            sx = s1;
        } else
            continue;
        Hour d = new TolvenHour(md.getDate01());
        //           TolvenLogger.info( "Graph Data: " + m.getMonth() + "/" + m.getYear() + "=" + md.getPqValue01(), MenuAction.class);
        TimeSeriesDataItem di = sx.getDataItem(d);
        if (di != null)
            TolvenLogger.info(
                    "Date: " + di.getPeriod() + " replacing " + di.getValue() + " with " + md.getPqValue01(),
                    MenuAction.class);
        sx.addOrUpdate(d, md.getPqValue01());
    }
    TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(s1);
    //        dataset.setDomainIsPointsInTime(true);
    TolvenLogger.info("Done preparing Dataset", MenuAction.class);

    return dataset;

}