List of usage examples for org.jfree.data.time TimeSeriesCollection addSeries
public void addSeries(TimeSeries series)
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(); } }