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:ca.myewb.frame.servlet.GraphServlet.java

private JFreeChart getDailyStats(Session s) {
    JFreeChart chart;/*w w  w  .j a  va2 s . c  om*/
    List<DailyStatsModel> stats = (new SafeHibList<DailyStatsModel>(
            s.createQuery("select ds from DailyStatsModel as ds where day<? and day>=? order by day desc")
                    .setDate(0, new Date()).setDate(1, GraphServlet.getStartDate()))).list();
    TimeSeriesCollection theData = new TimeSeriesCollection();

    TimeSeries signins = new TimeSeries("Raw Signins", Day.class);
    TimeSeries posts = new TimeSeries("Posts", Day.class);
    TimeSeries replies = new TimeSeries("Replies", Day.class);
    TimeSeries whiteboards = new TimeSeries("Whiteboards", Day.class);
    TimeSeries files = new TimeSeries("Files", Day.class);

    for (DailyStatsModel ds : stats) {
        Day theDay = new Day(ds.getDay());
        signins.add(theDay, ds.getSignins());
        posts.add(theDay, ds.getPosts());
        replies.add(theDay, ds.getReplies());
        whiteboards.add(theDay, ds.getWhiteboardEdits());
        files.add(theDay, ds.getFilesadded());
    }

    String title = "Usage (14-day moving avg)";
    theData.addSeries(MovingAverage.createMovingAverage(signins, "Signins", 14, 0));
    theData.addSeries(MovingAverage.createMovingAverage(posts, "Posts", 14, 0));
    theData.addSeries(MovingAverage.createMovingAverage(replies, "Replies", 14, 0));
    theData.addSeries(signins);
    theData.addSeries(MovingAverage.createMovingAverage(whiteboards, "Whiteboard Edits", 14, 0));
    theData.addSeries(MovingAverage.createMovingAverage(files, "Files Uploaded", 14, 0));

    chart = ChartFactory.createTimeSeriesChart(title, "Day", "Occurrences", theData, true, true, true);

    XYPlot plot = (XYPlot) chart.getPlot();
    plot.getRangeAxis().setUpperBound(400);
    XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
    renderer.setSeriesStroke(0, new BasicStroke(2.0f));
    renderer.setSeriesStroke(1, new BasicStroke(2.0f));
    renderer.setSeriesStroke(2, new BasicStroke(2.0f));
    renderer.setSeriesStroke(3, new BasicStroke(2.0f));
    renderer.setSeriesStroke(4, new BasicStroke(2.0f));
    renderer.setSeriesStroke(5, new BasicStroke(2.0f));
    return chart;
}

From source file:org.ramadda.data.services.PointFormHandler.java

/**
 * _more_/*from   ww  w.ja  v  a2  s . c o  m*/
 *
 * @param request _more_
 * @param pointEntry _more_
 * @param plotInfo _more_
 *
 * @return _more_
 *
 * @throws Exception _more_
 */
public BufferedImage makeTimeseriesImage(Request request, PointEntry pointEntry, final PlotInfo plotInfo)
        throws Exception {

    Entry entry = pointEntry.getEntry();
    int width = TIMESERIES_WIDTH;
    int height = TIMESERIES_HEIGHT;
    long numRecords = pointEntry.getNumRecords();
    final int numPointsToPlot = request.get(ARG_NUMPOINTS, TIMESERIES_POINTS);
    final int[] cnt = { 0 };
    final List<TimeSeries> series = new ArrayList<TimeSeries>();

    final List<RecordField> tmpFields = pointEntry.getRecordFile().getChartableFields();

    final List<RecordField> fields = new ArrayList<RecordField>();

    if (request.get(ARG_CHART_SHOW + FIELD_ALTITUDE, false)) {
        fields.add(new RecordField(FIELD_ALTITUDE, LABEL_ALTITUDE, "", -1, UNIT_M));
    }

    for (RecordField attr : tmpFields) {
        if (request.get(ARG_CHART_SHOW + attr.getName(), false)) {
            fields.add(attr);
        }
    }

    if ((fields.size() == 0) && (tmpFields.size() > 0)) {
        fields.add(tmpFields.get(0));
        request.put(ARG_CHART_SHOW + tmpFields.get(0).getName(), "true");
    }

    for (RecordField attr : fields) {
        series.add(new TimeSeries(attr.getLabel()));
    }

    RecordVisitor visitor = new BridgeRecordVisitor(getOutputHandler()) {
        public boolean doVisitRecord(RecordFile file, VisitInfo visitInfo, Record record) {
            PointRecord pointRecord = (PointRecord) record;
            for (int fieldCnt = 0; fieldCnt < fields.size(); fieldCnt++) {
                RecordField field = fields.get(fieldCnt);
                double value;
                //Check for altitude
                if (field.getParamId() < 0) {
                    value = pointRecord.getAltitude();
                } else {
                    value = record.getValue(field.getParamId());
                }
                long time = record.getRecordTime();
                series.get(fieldCnt).add(new FixedMillisecond(time), value);
            }
            plotInfo.setIndex(pointRecord.index);
            cnt[0]++;

            return true;
        }
    };

    long t1 = System.currentTimeMillis();
    int skip = (int) (numRecords / numPointsToPlot);
    getRecordJobManager().visitSequential(request, pointEntry, visitor, new VisitInfo(skip));
    long t2 = System.currentTimeMillis();

    JFreeChart chart = createTimeseriesChart(request, entry, new TimeSeriesCollection(), null);
    long t3 = System.currentTimeMillis();
    XYPlot plot = (XYPlot) chart.getPlot();
    int lineCnt = 0;
    int[] colorCnt = { 0 };
    int numberOfAxisLegends = 0;

    Hashtable<String, double[]> valueRanges = new Hashtable<String, double[]>();

    for (int extraCnt = 0; extraCnt < series.size(); extraCnt++) {
        TimeSeries timeSeries = series.get(extraCnt);
        RecordField field = fields.get(extraCnt);
        String unit = field.getUnit();
        if ((unit != null) && (unit.length() == 0)) {
            unit = null;
        }

        if (unit == null) {
            unit = extraCnt + "";
        }
        if (unit == null) {
            continue;
        }
        double max = timeSeries.getMaxY();
        double min = timeSeries.getMinY();
        double[] range = valueRanges.get(unit);
        if (range == null) {
            range = new double[] { min, max };
            valueRanges.put(unit, range);
        } else {
            range[0] = Math.min(range[0], min);
            range[1] = Math.max(range[1], max);
        }
    }

    Hashtable<String, NumberAxis> seenAxis = new Hashtable<String, NumberAxis>();
    for (int extraCnt = 0; extraCnt < series.size(); extraCnt++) {
        TimeSeries timeSeries = series.get(extraCnt);
        RecordField field = fields.get(extraCnt);

        String unit = field.getUnit();
        if ((unit != null) && (unit.length() == 0)) {
            unit = null;
        }

        TimeSeriesCollection dataset2 = new TimeSeriesCollection();
        dataset2.addSeries(timeSeries);
        NumberAxis axis = new NumberAxis(field.getLabel());
        numberOfAxisLegends++;
        if (unit != null) {
            double[] range = valueRanges.get(unit);
            axis.setRange(range[0], range[1]);
            NumberAxis seenOne = seenAxis.get(unit);
            if (seenOne == null) {
                seenAxis.put(unit, axis);
            } else {
                seenOne.setLabel(seenOne.getLabel() + "/" + field.getLabel());
                axis.setVisible(false);
                numberOfAxisLegends--;
            }
        } else {
            axis.setAutoRange(true);
            axis.setAutoRangeIncludesZero(true);
        }

        plot.setRangeAxis(lineCnt, axis);
        plot.setDataset(lineCnt, dataset2);
        plot.mapDatasetToRangeAxis(lineCnt, lineCnt);
        plot.setRangeAxisLocation(lineCnt, AxisLocation.BOTTOM_OR_RIGHT);

        StandardXYItemRenderer renderer = new MyStandardXYItemRenderer(plotInfo);
        renderer.setSeriesPaint(0, getColor(request, ARG_CHART_COLOR + field.getName(), colorCnt));
        plot.setRenderer(lineCnt, renderer);
        lineCnt++;
    }

    AxisSpace axisSpace = new AxisSpace();
    axisSpace.setRight(TIMESERIES_AXIS_WIDTHPER * numberOfAxisLegends);
    plot.setFixedRangeAxisSpace(axisSpace);

    long t4 = System.currentTimeMillis();
    BufferedImage newImage = chart.createBufferedImage(width + (numberOfAxisLegends * TIMESERIES_AXIS_WIDTHPER),
            height);

    long t5 = System.currentTimeMillis();

    //        System.err.println("Time series  cnt:" + cnt[0] + " " + (t2 - t1) + " "  + (t3 - t2) + " " + (t4 - t3) + " " + (t5 - t4));
    return newImage;
}

From source file:org.lmn.fc.frameworks.starbase.plugins.observatory.ui.tabs.charts.ChartHelper.java

/***********************************************************************************************
 * Creates a test dataset.//from  w  w w . j  a va 2 s.  co m
 *
 * @return the dataset.
 */

public static XYDataset createDummyDataset() {
    final TimeSeries s1 = new TimeSeries("Channel 0 23.4kHz", Second.class);

    s1.add(new Second(new Date(1110400770000L)), 178);
    s1.add(new Second(new Date(1110401020000L)), 182);
    s1.add(new Second(new Date(1110401270000L)), 172);
    s1.add(new Second(new Date(1110401520000L)), 173);
    s1.add(new Second(new Date(1110401770000L)), 164);
    s1.add(new Second(new Date(1110402080000L)), 148);
    s1.add(new Second(new Date(1110402330000L)), 159);
    s1.add(new Second(new Date(1110402580000L)), 162);
    s1.add(new Second(new Date(1110402830000L)), 171);
    s1.add(new Second(new Date(1110403080000L)), 175);
    s1.add(new Second(new Date(1110403330000L)), 175);
    s1.add(new Second(new Date(1110403580000L)), 169);
    s1.add(new Second(new Date(1110403830000L)), 176);
    s1.add(new Second(new Date(1110404080000L)), 181);
    s1.add(new Second(new Date(1110404330000L)), 184);
    s1.add(new Second(new Date(1110404580000L)), 169);
    s1.add(new Second(new Date(1110404830000L)), 165);
    s1.add(new Second(new Date(1110405080000L)), 163);
    s1.add(new Second(new Date(1110405330000L)), 149);
    s1.add(new Second(new Date(1110405580000L)), 150);
    s1.add(new Second(new Date(1110405830000L)), 163);
    s1.add(new Second(new Date(1110406080000L)), 164);
    s1.add(new Second(new Date(1110406330000L)), 161);
    s1.add(new Second(new Date(1110406580000L)), 169);
    s1.add(new Second(new Date(1110406830000L)), 170);
    s1.add(new Second(new Date(1110407080000L)), 167);
    s1.add(new Second(new Date(1110407330000L)), 167);
    s1.add(new Second(new Date(1110407580000L)), 187);
    s1.add(new Second(new Date(1110407830000L)), 195);
    s1.add(new Second(new Date(1110408080000L)), 207);
    s1.add(new Second(new Date(1110408330000L)), 200);
    s1.add(new Second(new Date(1110408580000L)), 185);
    s1.add(new Second(new Date(1110408830000L)), 179);
    s1.add(new Second(new Date(1110409080000L)), 172);
    s1.add(new Second(new Date(1110409330000L)), 196);
    s1.add(new Second(new Date(1110409580000L)), 233);
    s1.add(new Second(new Date(1110409830000L)), 218);
    s1.add(new Second(new Date(1110410080000L)), 217);
    s1.add(new Second(new Date(1110410330000L)), 198);
    s1.add(new Second(new Date(1110410580000L)), 196);
    s1.add(new Second(new Date(1110410830000L)), 183);
    s1.add(new Second(new Date(1110411080000L)), 170);
    s1.add(new Second(new Date(1110411330000L)), 155);
    s1.add(new Second(new Date(1110411580000L)), 167);
    s1.add(new Second(new Date(1110411830000L)), 166);
    s1.add(new Second(new Date(1110412080000L)), 184);
    s1.add(new Second(new Date(1110412330000L)), 199);
    s1.add(new Second(new Date(1110412580000L)), 194);
    s1.add(new Second(new Date(1110412830000L)), 185);
    s1.add(new Second(new Date(1110413080000L)), 181);
    s1.add(new Second(new Date(1110413330000L)), 171);
    s1.add(new Second(new Date(1110413580000L)), 163);
    s1.add(new Second(new Date(1110413830000L)), 169);
    s1.add(new Second(new Date(1110414080000L)), 162);
    s1.add(new Second(new Date(1110414330000L)), 173);
    s1.add(new Second(new Date(1110414580000L)), 160);
    s1.add(new Second(new Date(1110414830000L)), 147);
    s1.add(new Second(new Date(1110415080000L)), 151);
    s1.add(new Second(new Date(1110415330000L)), 179);
    s1.add(new Second(new Date(1110415580000L)), 192);
    s1.add(new Second(new Date(1110415830000L)), 180);
    s1.add(new Second(new Date(1110416080000L)), 159);
    s1.add(new Second(new Date(1110416330000L)), 164);
    s1.add(new Second(new Date(1110416580000L)), 178);
    s1.add(new Second(new Date(1110416830000L)), 163);
    s1.add(new Second(new Date(1110417080000L)), 157);
    s1.add(new Second(new Date(1110417330000L)), 152);
    s1.add(new Second(new Date(1110417580000L)), 148);
    s1.add(new Second(new Date(1110417830000L)), 162);
    s1.add(new Second(new Date(1110418080000L)), 176);
    s1.add(new Second(new Date(1110418330000L)), 168);
    s1.add(new Second(new Date(1110418580000L)), 167);
    s1.add(new Second(new Date(1110418830000L)), 170);
    s1.add(new Second(new Date(1110419080000L)), 161);
    s1.add(new Second(new Date(1110419330000L)), 150);
    s1.add(new Second(new Date(1110419580000L)), 157);
    s1.add(new Second(new Date(1110419830000L)), 164);
    s1.add(new Second(new Date(1110420080000L)), 156);
    s1.add(new Second(new Date(1110420330000L)), 155);
    s1.add(new Second(new Date(1110420580000L)), 150);
    s1.add(new Second(new Date(1110420830000L)), 160);
    s1.add(new Second(new Date(1110421080000L)), 168);
    s1.add(new Second(new Date(1110421330000L)), 160);
    s1.add(new Second(new Date(1110421580000L)), 162);
    s1.add(new Second(new Date(1110421830000L)), 152);
    s1.add(new Second(new Date(1110422080000L)), 148);
    s1.add(new Second(new Date(1110422330000L)), 141);
    s1.add(new Second(new Date(1110422580000L)), 140);
    s1.add(new Second(new Date(1110422830000L)), 145);
    s1.add(new Second(new Date(1110423080000L)), 152);
    s1.add(new Second(new Date(1110423330000L)), 152);
    s1.add(new Second(new Date(1110423580000L)), 143);
    s1.add(new Second(new Date(1110423830000L)), 164);
    s1.add(new Second(new Date(1110424080000L)), 177);
    s1.add(new Second(new Date(1110424330000L)), 161);
    s1.add(new Second(new Date(1110424580000L)), 166);
    s1.add(new Second(new Date(1110424830000L)), 177);
    s1.add(new Second(new Date(1110425080000L)), 177);
    s1.add(new Second(new Date(1110425330000L)), 183);
    s1.add(new Second(new Date(1110425580000L)), 196);
    s1.add(new Second(new Date(1110425830000L)), 198);
    s1.add(new Second(new Date(1110426080000L)), 197);
    s1.add(new Second(new Date(1110426330000L)), 189);
    s1.add(new Second(new Date(1110426580000L)), 201);
    s1.add(new Second(new Date(1110426830000L)), 193);
    s1.add(new Second(new Date(1110427080000L)), 200);
    s1.add(new Second(new Date(1110427330000L)), 210);
    s1.add(new Second(new Date(1110427580000L)), 214);
    s1.add(new Second(new Date(1110427830000L)), 204);
    s1.add(new Second(new Date(1110428080000L)), 196);
    s1.add(new Second(new Date(1110428330000L)), 199);
    s1.add(new Second(new Date(1110428580000L)), 202);
    s1.add(new Second(new Date(1110428830000L)), 215);
    s1.add(new Second(new Date(1110429080000L)), 220);
    s1.add(new Second(new Date(1110429330000L)), 236);
    s1.add(new Second(new Date(1110429580000L)), 238);
    s1.add(new Second(new Date(1110429830000L)), 246);
    s1.add(new Second(new Date(1110430080000L)), 240);
    s1.add(new Second(new Date(1110430330000L)), 242);
    s1.add(new Second(new Date(1110430580000L)), 232);
    s1.add(new Second(new Date(1110430830000L)), 233);
    s1.add(new Second(new Date(1110431080000L)), 233);
    s1.add(new Second(new Date(1110431330000L)), 227);
    s1.add(new Second(new Date(1110431580000L)), 199);
    s1.add(new Second(new Date(1110431830000L)), 218);
    s1.add(new Second(new Date(1110432080000L)), 212);
    s1.add(new Second(new Date(1110432330000L)), 220);
    s1.add(new Second(new Date(1110432580000L)), 205);
    s1.add(new Second(new Date(1110432830000L)), 188);
    s1.add(new Second(new Date(1110433080000L)), 185);
    s1.add(new Second(new Date(1110433330000L)), 172);
    s1.add(new Second(new Date(1110433580000L)), 168);
    s1.add(new Second(new Date(1110433830000L)), 173);
    s1.add(new Second(new Date(1110434080000L)), 175);
    s1.add(new Second(new Date(1110434330000L)), 160);
    s1.add(new Second(new Date(1110434580000L)), 138);
    s1.add(new Second(new Date(1110434830000L)), 112);
    s1.add(new Second(new Date(1110435080000L)), 89);
    s1.add(new Second(new Date(1110435330000L)), 72);
    s1.add(new Second(new Date(1110435580000L)), 54);
    s1.add(new Second(new Date(1110435830000L)), 44);
    s1.add(new Second(new Date(1110436080000L)), 51);
    s1.add(new Second(new Date(1110436330000L)), 77);
    s1.add(new Second(new Date(1110436580000L)), 105);
    s1.add(new Second(new Date(1110436830000L)), 126);
    s1.add(new Second(new Date(1110437080000L)), 136);
    s1.add(new Second(new Date(1110437330000L)), 142);
    s1.add(new Second(new Date(1110437580000L)), 152);
    s1.add(new Second(new Date(1110437830000L)), 153);
    s1.add(new Second(new Date(1110438080000L)), 141);
    s1.add(new Second(new Date(1110438330000L)), 127);
    s1.add(new Second(new Date(1110438580000L)), 17);
    s1.add(new Second(new Date(1110438830000L)), 18);
    s1.add(new Second(new Date(1110439080000L)), 18);
    s1.add(new Second(new Date(1110439330000L)), 18);
    s1.add(new Second(new Date(1110439580000L)), 18);
    s1.add(new Second(new Date(1110439830000L)), 18);
    s1.add(new Second(new Date(1110440080000L)), 19);
    s1.add(new Second(new Date(1110440330000L)), 18);
    s1.add(new Second(new Date(1110440580000L)), 18);
    s1.add(new Second(new Date(1110440830000L)), 40);
    s1.add(new Second(new Date(1110441080000L)), 108);
    s1.add(new Second(new Date(1110441330000L)), 157);
    s1.add(new Second(new Date(1110441580000L)), 153);
    s1.add(new Second(new Date(1110441830000L)), 124);
    s1.add(new Second(new Date(1110442080000L)), 173);
    s1.add(new Second(new Date(1110442330000L)), 171);
    s1.add(new Second(new Date(1110442580000L)), 168);
    s1.add(new Second(new Date(1110442830000L)), 168);
    s1.add(new Second(new Date(1110443080000L)), 169);
    s1.add(new Second(new Date(1110443330000L)), 167);
    s1.add(new Second(new Date(1110443580000L)), 168);
    s1.add(new Second(new Date(1110443830000L)), 171);
    s1.add(new Second(new Date(1110444080000L)), 172);
    s1.add(new Second(new Date(1110444330000L)), 172);
    s1.add(new Second(new Date(1110444580000L)), 170);
    s1.add(new Second(new Date(1110444830000L)), 173);
    s1.add(new Second(new Date(1110445080000L)), 173);
    s1.add(new Second(new Date(1110445330000L)), 174);
    s1.add(new Second(new Date(1110445580000L)), 172);
    s1.add(new Second(new Date(1110445830000L)), 173);
    s1.add(new Second(new Date(1110446080000L)), 172);
    s1.add(new Second(new Date(1110446330000L)), 172);
    s1.add(new Second(new Date(1110446580000L)), 171);
    s1.add(new Second(new Date(1110446830000L)), 171);
    s1.add(new Second(new Date(1110447080000L)), 171);
    s1.add(new Second(new Date(1110447330000L)), 172);
    s1.add(new Second(new Date(1110447580000L)), 174);
    s1.add(new Second(new Date(1110447830000L)), 173);
    s1.add(new Second(new Date(1110448080000L)), 173);
    s1.add(new Second(new Date(1110448330000L)), 171);
    s1.add(new Second(new Date(1110448580000L)), 170);
    s1.add(new Second(new Date(1110448830000L)), 172);
    s1.add(new Second(new Date(1110449080000L)), 172);
    s1.add(new Second(new Date(1110449330000L)), 172);
    s1.add(new Second(new Date(1110449580000L)), 170);
    s1.add(new Second(new Date(1110449830000L)), 167);
    s1.add(new Second(new Date(1110450080000L)), 165);
    s1.add(new Second(new Date(1110450330000L)), 166);
    s1.add(new Second(new Date(1110450580000L)), 165);
    s1.add(new Second(new Date(1110450830000L)), 163);
    s1.add(new Second(new Date(1110451080000L)), 163);
    s1.add(new Second(new Date(1110451330000L)), 160);
    s1.add(new Second(new Date(1110451580000L)), 160);
    s1.add(new Second(new Date(1110451830000L)), 160);
    s1.add(new Second(new Date(1110452080000L)), 160);
    s1.add(new Second(new Date(1110452330000L)), 159);
    s1.add(new Second(new Date(1110452580000L)), 159);
    s1.add(new Second(new Date(1110452830000L)), 158);
    s1.add(new Second(new Date(1110453080000L)), 158);
    s1.add(new Second(new Date(1110453330000L)), 159);
    s1.add(new Second(new Date(1110453580000L)), 159);
    s1.add(new Second(new Date(1110453830000L)), 158);
    s1.add(new Second(new Date(1110454080000L)), 154);
    s1.add(new Second(new Date(1110454330000L)), 151);
    s1.add(new Second(new Date(1110454580000L)), 151);
    s1.add(new Second(new Date(1110454830000L)), 102);
    s1.add(new Second(new Date(1110455080000L)), 90);
    s1.add(new Second(new Date(1110455330000L)), 95);
    s1.add(new Second(new Date(1110455580000L)), 102);
    s1.add(new Second(new Date(1110455830000L)), 107);
    s1.add(new Second(new Date(1110456080000L)), 113);
    s1.add(new Second(new Date(1110456330000L)), 119);
    s1.add(new Second(new Date(1110456580000L)), 123);
    s1.add(new Second(new Date(1110456830000L)), 127);
    s1.add(new Second(new Date(1110457080000L)), 131);
    s1.add(new Second(new Date(1110457330000L)), 134);
    s1.add(new Second(new Date(1110457580000L)), 137);
    s1.add(new Second(new Date(1110457830000L)), 138);
    s1.add(new Second(new Date(1110458080000L)), 140);
    s1.add(new Second(new Date(1110458330000L)), 142);
    s1.add(new Second(new Date(1110458580000L)), 142);
    s1.add(new Second(new Date(1110458830000L)), 141);
    s1.add(new Second(new Date(1110459080000L)), 144);
    s1.add(new Second(new Date(1110459330000L)), 145);
    s1.add(new Second(new Date(1110459580000L)), 146);
    s1.add(new Second(new Date(1110459830000L)), 149);
    s1.add(new Second(new Date(1110460080000L)), 149);
    s1.add(new Second(new Date(1110460330000L)), 149);
    s1.add(new Second(new Date(1110460580000L)), 150);
    s1.add(new Second(new Date(1110460830000L)), 152);
    s1.add(new Second(new Date(1110461080000L)), 151);
    s1.add(new Second(new Date(1110461330000L)), 151);
    s1.add(new Second(new Date(1110461580000L)), 151);
    s1.add(new Second(new Date(1110461830000L)), 151);
    s1.add(new Second(new Date(1110462080000L)), 151);
    s1.add(new Second(new Date(1110462330000L)), 153);
    s1.add(new Second(new Date(1110462580000L)), 152);
    s1.add(new Second(new Date(1110462830000L)), 152);
    s1.add(new Second(new Date(1110463080000L)), 152);
    s1.add(new Second(new Date(1110463330000L)), 151);
    s1.add(new Second(new Date(1110463580000L)), 152);
    s1.add(new Second(new Date(1110463830000L)), 152);
    s1.add(new Second(new Date(1110464080000L)), 152);
    s1.add(new Second(new Date(1110464330000L)), 151);
    s1.add(new Second(new Date(1110464580000L)), 150);
    s1.add(new Second(new Date(1110464830000L)), 148);
    s1.add(new Second(new Date(1110465080000L)), 147);
    s1.add(new Second(new Date(1110465330000L)), 145);
    s1.add(new Second(new Date(1110465580000L)), 145);
    s1.add(new Second(new Date(1110465830000L)), 145);
    s1.add(new Second(new Date(1110466080000L)), 146);
    s1.add(new Second(new Date(1110466330000L)), 147);
    s1.add(new Second(new Date(1110466580000L)), 147);
    s1.add(new Second(new Date(1110466830000L)), 145);
    s1.add(new Second(new Date(1110467080000L)), 143);
    s1.add(new Second(new Date(1110467330000L)), 142);
    s1.add(new Second(new Date(1110467580000L)), 141);
    s1.add(new Second(new Date(1110467830000L)), 143);
    s1.add(new Second(new Date(1110468080000L)), 144);
    s1.add(new Second(new Date(1110468330000L)), 143);
    s1.add(new Second(new Date(1110468580000L)), 143);
    s1.add(new Second(new Date(1110468830000L)), 141);
    s1.add(new Second(new Date(1110469080000L)), 140);
    s1.add(new Second(new Date(1110469330000L)), 140);
    s1.add(new Second(new Date(1110469580000L)), 141);
    s1.add(new Second(new Date(1110469830000L)), 143);
    s1.add(new Second(new Date(1110470080000L)), 146);
    s1.add(new Second(new Date(1110470330000L)), 150);
    s1.add(new Second(new Date(1110470580000L)), 153);
    s1.add(new Second(new Date(1110470830000L)), 155);
    s1.add(new Second(new Date(1110471080000L)), 157);
    s1.add(new Second(new Date(1110471330000L)), 156);
    s1.add(new Second(new Date(1110471580000L)), 154);
    s1.add(new Second(new Date(1110471830000L)), 155);
    s1.add(new Second(new Date(1110472080000L)), 153);
    s1.add(new Second(new Date(1110472330000L)), 150);
    s1.add(new Second(new Date(1110472580000L)), 145);
    s1.add(new Second(new Date(1110472830000L)), 144);
    s1.add(new Second(new Date(1110473080000L)), 148);
    s1.add(new Second(new Date(1110473330000L)), 152);
    s1.add(new Second(new Date(1110473580000L)), 154);
    s1.add(new Second(new Date(1110473830000L)), 157);
    s1.add(new Second(new Date(1110474080000L)), 160);
    s1.add(new Second(new Date(1110474330000L)), 159);
    s1.add(new Second(new Date(1110474580000L)), 161);
    s1.add(new Second(new Date(1110474830000L)), 156);
    s1.add(new Second(new Date(1110475080000L)), 142);
    s1.add(new Second(new Date(1110475330000L)), 140);
    s1.add(new Second(new Date(1110475580000L)), 136);
    s1.add(new Second(new Date(1110475830000L)), 127);
    s1.add(new Second(new Date(1110476080000L)), 113);
    s1.add(new Second(new Date(1110476330000L)), 105);
    s1.add(new Second(new Date(1110476580000L)), 107);
    s1.add(new Second(new Date(1110476830000L)), 103);
    s1.add(new Second(new Date(1110477080000L)), 97);
    s1.add(new Second(new Date(1110477330000L)), 102);
    s1.add(new Second(new Date(1110477580000L)), 111);
    s1.add(new Second(new Date(1110477830000L)), 127);
    s1.add(new Second(new Date(1110478080000L)), 149);
    s1.add(new Second(new Date(1110478330000L)), 166);
    s1.add(new Second(new Date(1110478580000L)), 181);
    s1.add(new Second(new Date(1110478830000L)), 189);
    s1.add(new Second(new Date(1110479080000L)), 203);
    s1.add(new Second(new Date(1110479330000L)), 224);
    s1.add(new Second(new Date(1110479580000L)), 234);
    s1.add(new Second(new Date(1110479830000L)), 237);
    s1.add(new Second(new Date(1110480080000L)), 229);
    s1.add(new Second(new Date(1110480330000L)), 228);
    s1.add(new Second(new Date(1110480580000L)), 222);
    s1.add(new Second(new Date(1110480830000L)), 205);
    s1.add(new Second(new Date(1110481080000L)), 222);
    s1.add(new Second(new Date(1110481330000L)), 226);
    s1.add(new Second(new Date(1110481580000L)), 222);
    s1.add(new Second(new Date(1110481830000L)), 229);
    s1.add(new Second(new Date(1110482080000L)), 247);
    s1.add(new Second(new Date(1110482330000L)), 240);
    s1.add(new Second(new Date(1110482580000L)), 251);
    s1.add(new Second(new Date(1110482830000L)), 240);
    s1.add(new Second(new Date(1110483080000L)), 242);
    s1.add(new Second(new Date(1110483330000L)), 241);
    s1.add(new Second(new Date(1110483580000L)), 250);
    s1.add(new Second(new Date(1110483830000L)), 255);
    s1.add(new Second(new Date(1110484080000L)), 255);
    s1.add(new Second(new Date(1110484330000L)), 255);
    s1.add(new Second(new Date(1110484580000L)), 255);
    s1.add(new Second(new Date(1110484830000L)), 255);
    s1.add(new Second(new Date(1110485080000L)), 255);
    s1.add(new Second(new Date(1110485330000L)), 254);
    s1.add(new Second(new Date(1110485580000L)), 253);
    s1.add(new Second(new Date(1110485830000L)), 254);
    s1.add(new Second(new Date(1110486080000L)), 59);

    // We may as well use the default TimeZone
    final TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(s1);

    dataset.setDomainIsPointsInTime(true);

    return (dataset);
}

From source file:de.tor.tribes.ui.views.DSWorkbenchStatsFrame.java

public void updateChart(List<TribeStatsElement> pElems) {
    chart = null;//from  www .  ja va2  s. com
    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:oscar.oscarEncounter.oscarMeasurements.pageUtil.MeasurementGraphAction2.java

JFreeChart labChart(String demographicNo, String typeIdName, String typeIdName2, String patientName,
        String chartTitle) {//  ww  w  . ja va2  s .com
    org.jfree.data.time.TimeSeriesCollection dataset = new org.jfree.data.time.TimeSeriesCollection();
    ArrayList<EctMeasurementsDataBean> list = getList(demographicNo, typeIdName);
    String typeYAxisName = "";

    if (typeIdName.equals("BP")) {
        log.debug("Using BP LOGIC FOR type 1 ");
        EctMeasurementsDataBean sampleLine = list.get(0);
        typeYAxisName = sampleLine.getTypeDescription();
        TimeSeries systolic = new TimeSeries("Systolic", Day.class);
        TimeSeries diastolic = new TimeSeries("Diastolic", Day.class);
        for (EctMeasurementsDataBean mdb : list) { // dataVector) {
            String[] str = mdb.getDataField().split("/");

            systolic.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(str[0]));
            diastolic.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(str[1]));
        }
        dataset.addSeries(diastolic);
        dataset.addSeries(systolic);
    } else {
        log.debug("Not Using BP LOGIC FOR type 1 ");
        // get the name from the TimeSeries
        EctMeasurementsDataBean sampleLine = list.get(0);
        String typeLegendName = sampleLine.getTypeDisplayName();
        typeYAxisName = sampleLine.getTypeDescription(); // this should be the type of measurement
        TimeSeries newSeries = new TimeSeries(typeLegendName, Day.class);
        for (EctMeasurementsDataBean mdb : list) { //dataVector) {
            newSeries.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(mdb.getDataField()));
        }
        dataset.addSeries(newSeries);
    }

    JFreeChart chart = ChartFactory.createTimeSeriesChart(chartTitle, "Days", typeYAxisName, dataset, true,
            true, true);

    XYPlot plot = chart.getXYPlot();
    plot.getDomainAxis().setAutoRange(true);

    log.debug("LEN " + plot.getDomainAxis().getLowerBound() + " ddd " + plot.getDomainAxis().getUpperMargin()
            + " eee " + plot.getDomainAxis().getLowerMargin());
    plot.getDomainAxis().setUpperMargin(plot.getDomainAxis().getUpperMargin() * 6);
    plot.getDomainAxis().setLowerMargin(plot.getDomainAxis().getLowerMargin() * 6);
    plot.getRangeAxis().setUpperMargin(plot.getRangeAxis().getUpperMargin() * 1.7);

    plot.getDomainAxis().setUpperMargin(0.9);
    plot.getDomainAxis().setLowerMargin(0.9);
    plot.getRangeAxis().setUpperMargin(plot.getRangeAxis().getUpperMargin() * 4);

    ValueAxis va = plot.getRangeAxis();
    va.setAutoRange(true);
    XYItemRenderer renderer = plot.getRenderer(); //DateFormat.getInstance()
    XYItemLabelGenerator generator = new StandardXYItemLabelGenerator("{1} \n {2}",
            new SimpleDateFormat("yyyy.MM.dd"), new DecimalFormat("0.00"));
    renderer.setSeriesItemLabelGenerator(0, generator);//setLabelGenerator(generator);

    renderer.setBaseItemLabelsVisible(true);
    plot.setBackgroundPaint(Color.WHITE);
    plot.setDomainCrosshairPaint(Color.GRAY);

    if (renderer instanceof XYLineAndShapeRenderer) {
        XYLineAndShapeRenderer rend = (XYLineAndShapeRenderer) renderer;
        rend.setBaseShapesVisible(true);
        rend.setBaseShapesFilled(true);
    }

    plot.setRenderer(renderer);
    return chart;
}

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

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

    //      for (int i = 0; i < clusters.size(); i++)
    //      {/*from www  .  ja v  a2  s  .c  o m*/
    //         Cluster_KMeans current_cluster = clusters.get(i);   
    //         double[] center_of_mass = current_cluster.getCenter_of_mass();
    //         
    //         final TimeSeries s1 = new TimeSeries("Cluster_"+current_cluster.getCluster_id(), Hour.class);
    //
    //         for (int j = 0; j < 24; j++)
    //         {
    //            s1.add(new Hour( j, from.getDayOfMonth(), from.getMonthValue(), from.getYear() ), center_of_mass[j]);
    //         }
    //         
    //         dataset.addSeries(s1);
    //      }

    for (int i = 0; i < clusters.size(); i++) {
        Cluster_KMeans current_cluster = clusters.get(i);
        ArrayList<Day_24d> 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);

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

            for (int j = 0; j < 24; j++) {
                s1.add(new Hour(j, from.getDayOfMonth(), from.getMonthValue(), from.getYear()),
                        current_series.getMeasurement(j));
            }

            dataset.addSeries(s1);
        }
    }

    dataset.setDomainIsPointsInTime(true);

    return dataset;
}

From source file:oscar.oscarEncounter.oscarMeasurements.pageUtil.MeasurementGraphAction2.java

JFreeChart defaultChart(String demographicNo, String typeIdName, String typeIdName2, String patientName,
        String chartTitle) {//from w w  w.  j  a v  a  2  s .  com
    org.jfree.data.time.TimeSeriesCollection dataset = new org.jfree.data.time.TimeSeriesCollection();

    ArrayList<EctMeasurementsDataBean> list = getList(demographicNo, typeIdName);
    String typeYAxisName = "";

    if (typeIdName.equals("BP")) {
        log.debug("Using BP LOGIC FOR type 1 ");
        EctMeasurementsDataBean sampleLine = list.get(0);
        typeYAxisName = sampleLine.getTypeDescription();
        TimeSeries systolic = new TimeSeries("Systolic", Day.class);
        TimeSeries diastolic = new TimeSeries("Diastolic", Day.class);
        for (EctMeasurementsDataBean mdb : list) { // dataVector) {
            String[] str = mdb.getDataField().split("/");

            systolic.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(str[0]));
            diastolic.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(str[1]));
        }
        dataset.addSeries(diastolic);
        dataset.addSeries(systolic);

    } else {
        log.debug("Not Using BP LOGIC FOR type 1 ");
        // get the name from the TimeSeries
        EctMeasurementsDataBean sampleLine = list.get(0);
        String typeLegendName = sampleLine.getTypeDisplayName();
        typeYAxisName = sampleLine.getTypeDescription(); // this should be the type of measurement

        TimeSeries newSeries = new TimeSeries(typeLegendName, Day.class);
        for (EctMeasurementsDataBean mdb : list) { //dataVector) {
            newSeries.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(mdb.getDataField()));
        }
        dataset.addSeries(newSeries);
    }

    JFreeChart chart = ChartFactory.createTimeSeriesChart(chartTitle, "Days", typeYAxisName, dataset, true,
            true, true);

    if (typeIdName2 != null) {
        log.debug("type id name 2" + typeIdName2);

        ArrayList<EctMeasurementsDataBean> list2 = getList(demographicNo, typeIdName2);
        org.jfree.data.time.TimeSeriesCollection dataset2 = new org.jfree.data.time.TimeSeriesCollection();

        log.debug("list2 " + list2);

        EctMeasurementsDataBean sampleLine2 = list2.get(0);
        String typeLegendName = sampleLine2.getTypeDisplayName();
        String typeYAxisName2 = sampleLine2.getTypeDescription(); // this should be the type of measurement

        TimeSeries newSeries = new TimeSeries(typeLegendName, Day.class);
        for (EctMeasurementsDataBean mdb : list2) { //dataVector) {
            newSeries.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(mdb.getDataField()));
        }
        dataset2.addSeries(newSeries);

        ////
        final XYPlot plot = chart.getXYPlot();
        final NumberAxis axis2 = new NumberAxis(typeYAxisName2);
        axis2.setAutoRangeIncludesZero(false);
        plot.setRangeAxis(1, axis2);
        plot.setDataset(1, dataset2);
        plot.mapDatasetToRangeAxis(1, 1);
        final XYItemRenderer renderer = plot.getRenderer();
        renderer.setBaseToolTipGenerator(StandardXYToolTipGenerator.getTimeSeriesInstance());
        if (renderer instanceof StandardXYItemRenderer) {
            final StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;

            rr.setBaseShapesFilled(true);
        }

        final StandardXYItemRenderer renderer2 = new StandardXYItemRenderer();
        renderer2.setSeriesPaint(0, Color.black);
        renderer.setBaseToolTipGenerator(StandardXYToolTipGenerator.getTimeSeriesInstance());
        plot.setRenderer(1, renderer2);

    }
    return chart;
}

From source file:org.esa.beam.timeseries.ui.graph.TimeSeriesGraphModel.java

@Override
public void addTimeSeries(List<TimeSeries> timeSeriesList, TimeSeriesType type) {
    final int timeSeriesCount;
    final int collectionOffset;
    if (TimeSeriesType.INSITU.equals(type)) {
        timeSeriesCount = displayAxisMapping.getInsituCount();
        collectionOffset = INSITU_COLLECTION_INDEX_OFFSET;
    } else {//from w  w w .  j  ava2s .c om
        timeSeriesCount = displayAxisMapping.getRasterCount();
        if (TimeSeriesType.CURSOR.equals(type)) {
            collectionOffset = CURSOR_COLLECTION_INDEX_OFFSET;
        } else {
            collectionOffset = PIN_COLLECTION_INDEX_OFFSET;
        }
    }
    final String[] aliasNames = getAliasNames();

    for (int aliasIdx = 0; aliasIdx < aliasNames.length; aliasIdx++) {
        final int targetCollectionIndex = collectionOffset + aliasIdx * 3;
        final TimeSeriesCollection targetTimeSeriesCollection = (TimeSeriesCollection) timeSeriesPlot
                .getDataset(targetCollectionIndex);
        if (targetTimeSeriesCollection != null) {
            targetTimeSeriesCollection.removeAllSeries();
        }
    }
    if (timeSeriesCount == 0) {
        return;
    }
    final int numPositions = timeSeriesList.size() / timeSeriesCount;
    int timeSeriesIndexOffset = 0;
    for (int posIdx = 0; posIdx < numPositions; posIdx++) {
        final Shape posShape = getShapeForPosition(type, posIdx);
        for (int aliasIdx = 0; aliasIdx < aliasNames.length; aliasIdx++) {
            final int targetCollectionIndex = collectionOffset + aliasIdx * 3;
            final TimeSeriesCollection targetTimeSeriesCollection = (TimeSeriesCollection) timeSeriesPlot
                    .getDataset(targetCollectionIndex);
            if (targetTimeSeriesCollection == null) {
                continue;
            }
            final XYItemRenderer renderer = timeSeriesPlot.getRenderer(targetCollectionIndex);
            final int dataSourceCount = getDataSourceCount(type, aliasNames[aliasIdx]);
            for (int ignoredIndex = 0; ignoredIndex < dataSourceCount; ignoredIndex++) {
                final TimeSeries currentTimeSeries = timeSeriesList.get(timeSeriesIndexOffset);
                targetTimeSeriesCollection.addSeries(currentTimeSeries);
                final int timeSeriesTargetIdx = targetTimeSeriesCollection.getSeriesCount() - 1;
                renderer.setSeriesShape(timeSeriesTargetIdx, posShape);
                renderer.setSeriesPaint(timeSeriesTargetIdx,
                        renderer.getSeriesPaint(timeSeriesTargetIdx % dataSourceCount));
                renderer.setSeriesVisibleInLegend(timeSeriesTargetIdx, !currentTimeSeries.isEmpty());
                timeSeriesIndexOffset++;
            }
            final ValueAxis axisForDataset = timeSeriesPlot.getDomainAxisForDataset(targetCollectionIndex);
            axisForDataset.configure();
        }
    }
    updateAnnotation(getCurrentView().getRaster());
}

From source file:oscar.oscarEncounter.oscarMeasurements.pageUtil.MeasurementGraphAction2.java

JFreeChart rxAndLabChart(String demographicNo, String typeIdName, String typeIdName2, String patientName,
        String chartTitle) {/*from  ww  w.j a v a  2 s  .  co m*/
    org.jfree.data.time.TimeSeriesCollection dataset = new org.jfree.data.time.TimeSeriesCollection();

    ArrayList<EctMeasurementsDataBean> list = getList(demographicNo, typeIdName);

    String typeYAxisName = "";

    if (typeIdName.equals("BP")) {
        log.debug("Using BP LOGIC FOR type 1 ");
        EctMeasurementsDataBean sampleLine = list.get(0);
        typeYAxisName = sampleLine.getTypeDescription();
        TimeSeries systolic = new TimeSeries("Systolic", Day.class);
        TimeSeries diastolic = new TimeSeries("Diastolic", Day.class);
        for (EctMeasurementsDataBean mdb : list) { // dataVector) {
            String[] str = mdb.getDataField().split("/");

            systolic.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(str[0]));
            diastolic.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(str[1]));
        }
        dataset.addSeries(diastolic);
        dataset.addSeries(systolic);

    } else {
        log.debug("Not Using BP LOGIC FOR type 1 ");
        // get the name from the TimeSeries
        EctMeasurementsDataBean sampleLine = list.get(0);
        String typeLegendName = sampleLine.getTypeDisplayName();
        typeYAxisName = sampleLine.getTypeDescription(); // this should be the type of measurement
        TimeSeries newSeries = new TimeSeries(typeLegendName, Day.class);
        for (EctMeasurementsDataBean mdb : list) { //dataVector) {
            newSeries.addOrUpdate(new Day(mdb.getDateObservedAsDate()), Double.parseDouble(mdb.getDataField()));
        }
        dataset.addSeries(newSeries);
    }

    JFreeChart chart = ChartFactory.createTimeSeriesChart(chartTitle, "Days", typeYAxisName, dataset, true,
            true, true);
    chart.setBackgroundPaint(Color.decode("#ccccff"));

    XYPlot plot = chart.getXYPlot();

    plot.getDomainAxis().setAutoRange(true);

    log.debug("LEN " + plot.getDomainAxis().getLowerBound() + " ddd " + plot.getDomainAxis().getUpperMargin()
            + " eee " + plot.getDomainAxis().getLowerMargin());
    //plot.getDomainAxis().setUpperMargin(plot.getDomainAxis().getUpperMargin()*6);
    //plot.getDomainAxis().setLowerMargin(plot.getDomainAxis().getLowerMargin()*6);
    // plot.getRangeAxis().setUpperMargin(plot.getRangeAxis().getUpperMargin()*1.7);

    plot.getDomainAxis().setUpperMargin(0.9);
    plot.getDomainAxis().setLowerMargin(0.9);
    plot.getRangeAxis().setUpperMargin(plot.getRangeAxis().getUpperMargin() * 4);

    ValueAxis va = plot.getRangeAxis();
    va.setAutoRange(true);
    XYItemRenderer renderer = plot.getRenderer(); //DateFormat.getInstance()
    XYItemLabelGenerator generator = new StandardXYItemLabelGenerator("{1} \n {2}",
            new SimpleDateFormat("yyyy.MM.dd"), new DecimalFormat("0.00"));
    renderer.setSeriesItemLabelGenerator(0, generator);//setLabelGenerator(generator);

    renderer.setBaseItemLabelsVisible(true);
    plot.setBackgroundPaint(Color.WHITE);
    plot.setDomainCrosshairPaint(Color.GRAY);

    if (renderer instanceof XYLineAndShapeRenderer) {
        XYLineAndShapeRenderer rend = (XYLineAndShapeRenderer) renderer;
        rend.setBaseShapesVisible(true);
        rend.setBaseShapesFilled(true);
    }

    plot.setRenderer(renderer);

    ///////

    TaskSeriesCollection datasetDrug = new TaskSeriesCollection();
    TaskSeries s1 = new TaskSeries("WARFARIN");
    TaskSeries s2 = new TaskSeries("ALLOPUINOL");
    TaskSeries s3 = new TaskSeries("LIPITOR");

    s1.add(new Task("WARFARIN", UtilDateUtilities.StringToDate("2007-01-01"),
            UtilDateUtilities.StringToDate("2009-01-01")));
    s2.add(new Task("ALLOPUINOL", UtilDateUtilities.StringToDate("2008-01-01"), new Date()));
    s3.add(new Task("LIPITOR", UtilDateUtilities.StringToDate("2007-01-01"),
            UtilDateUtilities.StringToDate("2008-01-01")));

    datasetDrug.add(s1);
    datasetDrug.add(s2);
    datasetDrug.add(s3);

    XYTaskDataset dataset2 = new XYTaskDataset(datasetDrug);
    dataset2.setTransposed(true);
    dataset2.setSeriesWidth(0.6);

    DateAxis xAxis = new DateAxis("Date/Time");
    SymbolAxis yAxis = new SymbolAxis("Meds", new String[] { "WARFARIN", "ALLOPURINOL", "LIPITOR" });
    yAxis.setGridBandsVisible(false);
    XYBarRenderer xyrenderer = new XYBarRenderer();
    xyrenderer.setUseYInterval(true);
    xyrenderer.setBarPainter(new StandardXYBarPainter());

    xyrenderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator("HAPPY{1} \n {2}",
            new SimpleDateFormat("yyyy.MM.dd"), new DecimalFormat("0.00")));
    XYPlot xyplot = new XYPlot(dataset2, xAxis, yAxis, xyrenderer);

    xyplot.getDomainAxis().setUpperMargin(0.9);
    xyplot.getDomainAxis().setLowerMargin(0.9);

    CombinedDomainXYPlot cplot = new CombinedDomainXYPlot(new DateAxis("Date/Time"));
    cplot.add(plot);
    cplot.add(xyplot);

    ///////

    chart = new JFreeChart("MED + LAB CHART", cplot);
    chart.setBackgroundPaint(Color.white);
    return chart;
}

From source file:org.matsim.contrib.drt.analysis.DynModeTripsAnalyser.java

public static void analyseWaitTimes(String fileName, List<DynModeTrip> trips, int binsize_s) {
    Collections.sort(trips);/*  w w w .  j ava  2s.  co m*/
    if (trips.size() == 0)
        return;
    int startTime = ((int) (trips.get(0).getDepartureTime() / binsize_s)) * binsize_s;
    int endTime = ((int) (trips.get(trips.size() - 1).getDepartureTime() / binsize_s) + binsize_s) * binsize_s;
    Map<Double, List<DynModeTrip>> splitTrips = splitTripsIntoBins(trips, startTime, endTime, binsize_s);

    DecimalFormat format = new DecimalFormat();
    format.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.US));
    format.setMinimumIntegerDigits(1);
    format.setMaximumFractionDigits(2);
    format.setGroupingUsed(false);

    SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss");

    BufferedWriter bw = IOUtils.getBufferedWriter(fileName + ".csv");
    TimeSeriesCollection dataset = new TimeSeriesCollection();
    TimeSeriesCollection datasetrequ = new TimeSeriesCollection();
    TimeSeries averageWaitC = new TimeSeries("average");
    TimeSeries medianWait = new TimeSeries("median");
    TimeSeries p_5Wait = new TimeSeries("5th percentile");
    TimeSeries p_95Wait = new TimeSeries("95th percentile");
    TimeSeries requests = new TimeSeries("Ride requests");

    try {
        bw.write("timebin;trips;average_wait;min;p_5;p_25;median;p_75;p_95;max");
        for (Entry<Double, List<DynModeTrip>> e : splitTrips.entrySet()) {
            long rides = 0;
            double averageWait = 0;
            double min = 0;
            double p_5 = 0;
            double p_25 = 0;
            double median = 0;
            double p_75 = 0;
            double p_95 = 0;
            double max = 0;
            if (!e.getValue().isEmpty()) {
                DescriptiveStatistics stats = new DescriptiveStatistics();
                for (DynModeTrip t : e.getValue()) {
                    stats.addValue(t.getWaitTime());
                }
                rides = stats.getN();
                averageWait = stats.getMean();
                min = stats.getMin();
                p_5 = stats.getPercentile(5);
                p_25 = stats.getPercentile(25);
                median = stats.getPercentile(50);
                p_75 = stats.getPercentile(75);
                p_95 = stats.getPercentile(95);
                max = stats.getMax();

            }
            Minute h = new Minute(sdf2.parse(Time.writeTime(e.getKey())));

            medianWait.addOrUpdate(h, Double.valueOf(median));
            averageWaitC.addOrUpdate(h, Double.valueOf(averageWait));
            p_5Wait.addOrUpdate(h, Double.valueOf(p_5));
            p_95Wait.addOrUpdate(h, Double.valueOf(p_95));
            requests.addOrUpdate(h, rides * 3600. / binsize_s);// normalised [req/h]
            bw.newLine();
            bw.write(Time.writeTime(e.getKey()) + ";" + rides + ";" + format.format(averageWait) + ";"
                    + format.format(min) + ";" + format.format(p_5) + ";" + format.format(p_25) + ";"
                    + format.format(median) + ";" + format.format(p_75) + ";" + format.format(p_95) + ";"
                    + format.format(max));

        }
        bw.flush();
        bw.close();
        dataset.addSeries(averageWaitC);
        dataset.addSeries(medianWait);
        dataset.addSeries(p_5Wait);
        dataset.addSeries(p_95Wait);
        datasetrequ.addSeries(requests);
        JFreeChart chart = chartProfile(splitTrips.size(), dataset, "Waiting times", "Wait time (s)");
        JFreeChart chart2 = chartProfile(splitTrips.size(), datasetrequ, "Ride requests per hour",
                "Requests per hour (req/h)");
        ChartSaveUtils.saveAsPNG(chart, fileName, 1500, 1000);
        ChartSaveUtils.saveAsPNG(chart2, fileName + "_requests", 1500, 1000);

    } catch (IOException | ParseException e) {

        e.printStackTrace();
    }

}