List of usage examples for org.jfree.data.time TimeSeriesCollection TimeSeriesCollection
public TimeSeriesCollection()
From source file:edu.unibonn.kmeans.mapreduce.plotting.TimeSeriesPlotter_KMeans.java
private XYDataset createDataset_centroids(ArrayList<Cluster_KMeans> clusters, LocalDateTime from) { final TimeSeriesCollection dataset = new TimeSeriesCollection(); for (int i = 0; i < clusters.size(); i++) { Cluster_KMeans current_cluster = clusters.get(i); 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]); }/* w w w .ja v a 2 s. co m*/ dataset.addSeries(s1); } dataset.setDomainIsPointsInTime(true); return dataset; }
From source file:org.rdv.viz.chart.ChartViz.java
/** * Create the chart and setup it's UI./*w ww.j a v a 2 s . c o m*/ */ private void initChart() { XYToolTipGenerator toolTipGenerator; if (xyMode) { dataCollection = new XYTimeSeriesCollection(); NumberAxis domainAxis = new NumberAxis(); domainAxis.setAutoRangeIncludesZero(false); domainAxis.addChangeListener(new AxisChangeListener() { public void axisChanged(AxisChangeEvent ace) { boundsChanged(); } }); this.domainAxis = domainAxis; toolTipGenerator = new StandardXYToolTipGenerator("{0}: {1} , {2}", new DecimalFormat(), new DecimalFormat()); } else { dataCollection = new TimeSeriesCollection(); domainAxis = new FixedAutoAdjustRangeDateAxis(); domainAxis.setLabel("Time"); domainAxis.setAutoRange(false); toolTipGenerator = new StandardXYToolTipGenerator("{0}: {1} , {2}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"), new DecimalFormat()); } rangeAxis = new NumberAxis(); rangeAxis.setAutoRangeIncludesZero(false); rangeAxis.addChangeListener(new AxisChangeListener() { public void axisChanged(AxisChangeEvent ace) { boundsChanged(); } }); FastXYItemRenderer renderer = new FastXYItemRenderer(StandardXYItemRenderer.LINES, toolTipGenerator); renderer.setBaseCreateEntities(false); renderer.setBaseStroke(new BasicStroke(0.5f)); if (xyMode) { renderer.setCursorVisible(true); } xyPlot = new XYPlot(dataCollection, domainAxis, rangeAxis, renderer); chart = new JFreeChart(xyPlot); chart.setAntiAlias(false); seriesLegend = chart.getLegend(); chart.removeLegend(); chartPanel = new ChartPanel(chart, true); chartPanel.setInitialDelay(0); // get the chart panel standard popup menu JPopupMenu popupMenu = chartPanel.getPopupMenu(); // create a popup menu item to copy an image to the clipboard final JMenuItem copyChartMenuItem = new JMenuItem("Copy"); copyChartMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { copyChart(); } }); popupMenu.insert(copyChartMenuItem, 2); popupMenu.insert(new JPopupMenu.Separator(), 3); popupMenu.add(new JPopupMenu.Separator()); showLegendMenuItem = new JCheckBoxMenuItem("Show Legend", true); showLegendMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { setShowLegend(showLegendMenuItem.isSelected()); } }); popupMenu.add(showLegendMenuItem); if (xyMode) { popupMenu.add(new JPopupMenu.Separator()); JMenuItem addLocalSeriesMenuItem = new JMenuItem("Add local series..."); addLocalSeriesMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { addLocalSeries(); } }); popupMenu.add(addLocalSeriesMenuItem); } chartPanelPanel = new JPanel(); chartPanelPanel.setLayout(new BorderLayout()); chartPanelPanel.add(chartPanel, BorderLayout.CENTER); }
From source file:edu.jhuapl.graphs.jfreechart.JFreeChartTimeSeriesGraphSource.java
/** * Initializes the graph. This method generates the backing {@link JFreeChart} from the time series and graph * parameter data.//from w w w. j a va 2 s .c o m * * @throws GraphException if the initialization fails */ public void initialize() throws GraphException { String title = getParam(GraphSource.GRAPH_TITLE, String.class, DEFAULT_TITLE); String xLabel = getParam(GraphSource.GRAPH_X_LABEL, String.class, DEFAULT_DOMAIN_LABEL); String yLabel = getParam(GraphSource.GRAPH_Y_LABEL, String.class, DEFAULT_RANGE_LABEL); Shape graphShape = getParam(GraphSource.GRAPH_SHAPE, Shape.class, DEFAULT_GRAPH_SHAPE); Paint graphColor = getParam(GraphSource.GRAPH_COLOR, Paint.class, DEFAULT_GRAPH_COLOR); boolean legend = getParam(GraphSource.GRAPH_LEGEND, Boolean.class, DEFAULT_GRAPH_LEGEND); boolean graphToolTip = getParam(GraphSource.GRAPH_TOOL_TIP, Boolean.class, DEFAULT_GRAPH_TOOL_TIP); Stroke graphStroke = getParam(GraphSource.GRAPH_STROKE, Stroke.class, DEFAULT_GRAPH_STROKE); Font titleFont = getParam(GraphSource.GRAPH_FONT, Font.class, DEFAULT_GRAPH_TITLE_FONT); boolean graphBorder = getParam(GraphSource.GRAPH_BORDER, Boolean.class, DEFAULT_GRAPH_BORDER); boolean legendBorder = getParam(GraphSource.LEGEND_BORDER, Boolean.class, DEFAULT_LEGEND_BORDER); Double offset = getParam(GraphSource.AXIS_OFFSET, Double.class, DEFAULT_AXIS_OFFSET); checkSeriesType(data); @SuppressWarnings("unchecked") List<? extends TimeSeriesInterface> timeData = (List<? extends TimeSeriesInterface>) data; TimeSeriesCollection dataset = new TimeSeriesCollection(); int seriesCount = 1; for (TimeSeriesInterface series : timeData) { dataset.addSeries(buildTimeSeries(series, seriesCount)); seriesCount += 1; } // actually create the chart this.chart = ChartFactory.createTimeSeriesChart(title, xLabel, yLabel, dataset, false, graphToolTip, false); // start customizing it Paint backgroundColor = getParam(GraphSource.BACKGROUND_COLOR, Paint.class, DEFAULT_BACKGROUND_COLOR); Paint plotColor = getParam(JFreeChartTimeSeriesGraphSource.PLOT_COLOR, Paint.class, backgroundColor); Paint graphDomainGridlinePaint = getParam(GraphSource.GRAPH_DOMAIN_GRIDLINE_PAINT, Paint.class, backgroundColor); Paint graphRangeGridlinePaint = getParam(GraphSource.GRAPH_RANGE_GRIDLINE_PAINT, Paint.class, backgroundColor); this.chart.setBackgroundPaint(backgroundColor); XYPlot plot = chart.getXYPlot(); plot.setBackgroundPaint(plotColor); plot.setAxisOffset(new RectangleInsets(offset, offset, offset, offset)); plot.setDomainGridlinePaint(graphDomainGridlinePaint); plot.setRangeGridlinePaint(graphRangeGridlinePaint); if (graphBorder) { } else { plot.setOutlinePaint(null); } //Use a TextTitle to change the font of the graph title TextTitle title1 = new TextTitle(); title1.setText(title); title1.setFont(titleFont); chart.setTitle(title1); //Makes a wrapper for the legend to remove the border around it if (legend) { LegendTitle legend1 = new LegendTitle(chart.getPlot()); BlockContainer wrapper = new BlockContainer(new BorderArrangement()); if (legendBorder) { wrapper.setFrame(new BlockBorder(1, 1, 1, 1)); } else { wrapper.setFrame(new BlockBorder(0, 0, 0, 0)); } BlockContainer items = legend1.getItemContainer(); items.setPadding(2, 10, 5, 2); wrapper.add(items); legend1.setWrapper(wrapper); legend1.setPosition(RectangleEdge.BOTTOM); legend1.setHorizontalAlignment(HorizontalAlignment.CENTER); if (params.get(GraphSource.LEGEND_FONT) instanceof Font) { legend1.setItemFont(((Font) params.get(GraphSource.LEGEND_FONT))); } chart.addSubtitle(legend1); } boolean include0 = getParam(GraphSource.GRAPH_RANGE_INCLUDE_0, Boolean.class, true); NumberAxis numAxis = (NumberAxis) plot.getRangeAxis(); double rangeLower = getParam(GraphSource.GRAPH_RANGE_LOWER_BOUND, Double.class, numAxis.getLowerBound()); double rangeUpper = getParam(GraphSource.GRAPH_RANGE_UPPER_BOUND, Double.class, numAxis.getUpperBound()); boolean graphRangeIntegerTick = getParam(GraphSource.GRAPH_RANGE_INTEGER_TICK, Boolean.class, false); boolean graphRangeMinorTickVisible = getParam(GraphSource.GRAPH_RANGE_MINOR_TICK_VISIBLE, Boolean.class, true); if (include0) { rangeLower = 0; } numAxis.setRange(rangeLower, rangeUpper); if (graphRangeIntegerTick) { numAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); } numAxis.setMinorTickMarksVisible(graphRangeMinorTickVisible); setupFont(numAxis, GraphSource.GRAPH_Y_AXIS_FONT); if (params.get(GraphSource.GRAPH_Y_AXIS_LABEL_FONT) instanceof Font) { numAxis.setLabelFont(((Font) params.get(GraphSource.GRAPH_Y_AXIS_LABEL_FONT))); } TimeResolution minimumResolution = getMinimumResolution(timeData); DateFormat dateFormat = getParam(GraphSource.GRAPH_DATE_FORMATTER, DateFormat.class, new DefaultDateFormatFactory().getFormat(minimumResolution)); if (params.get(DATE_AXIS) instanceof DateAxis) { DateAxis dateAxis = (DateAxis) params.get(DATE_AXIS); dateAxis.setLabel(xLabel); plot.setDomainAxis(dateAxis); } DateAxis dateAxis = ((DateAxis) plot.getDomainAxis()); dateAxis.setDateFormatOverride(dateFormat); if (params.get(GraphSource.GRAPH_X_AXIS_LABEL_FONT) instanceof Font) { dateAxis.setLabelFont(((Font) params.get(GraphSource.GRAPH_X_AXIS_LABEL_FONT))); } int minTick = getParam(GraphSource.GRAPH_MIN_DOMAIN_TICK, Integer.class, 1); if (minTick <= 0) { minTick = 1; } dateAxis.setTickUnit(getDateTickUnit(minimumResolution, minTick), false, false); //dateAxis.setMinorTickMarksVisible(true); //dateAxis.setMinorTickCount(7); dateAxis.setMinorTickMarkOutsideLength(2); Integer minorTick = getParam(GraphSource.GRAPH_MINOR_TICKS, Integer.class, null); if (minorTick != null) { int minorVal = minorTick; if (minorVal > 0) { dateAxis.setMinorTickCount(minorVal); } } setupFont(dateAxis, GraphSource.GRAPH_X_AXIS_FONT); //double lowerMargin = getParam(DOMAIN_AXIS_LOWER_MARGIN, Double.class, DEFAULT_DOMAIN_AXIS_LOWER_MARGIN); double lowerMargin = getParam(DOMAIN_AXIS_LOWER_MARGIN, Double.class, DEFAULT_DOMAIN_AXIS_LOWER_MARGIN); dateAxis.setLowerMargin(lowerMargin); //double upperMargin = getParam(DOMAIN_AXIS_UPPER_MARGIN, Double.class, DEFAULT_DOMAIN_AXIS_UPPER_MARGIN); double upperMargin = getParam(DOMAIN_AXIS_UPPER_MARGIN, Double.class, DEFAULT_DOMAIN_AXIS_UPPER_MARGIN); dateAxis.setUpperMargin(upperMargin); Date domainLower = getParam(GraphSource.GRAPH_DOMAIN_LOWER_BOUND, Date.class, dateAxis.getMinimumDate()); Date domainUpper = getParam(GraphSource.GRAPH_DOMAIN_UPPER_BOUND, Date.class, dateAxis.getMaximumDate()); dateAxis.setRange(domainLower, domainUpper); // depending on the domain axis range, display either 1 tick per day, week, month or year TickUnits standardUnits = new TickUnits(); standardUnits.add(new DateTickUnit(DateTickUnitType.DAY, 1)); standardUnits.add(new DateTickUnit(DateTickUnitType.DAY, 7)); standardUnits.add(new DateTickUnit(DateTickUnitType.MONTH, 1)); standardUnits.add(new DateTickUnit(DateTickUnitType.YEAR, 1)); dateAxis.setStandardTickUnits(standardUnits); TimeSeriesRenderer renderer = new TimeSeriesRenderer(dataset); setupRenderer(renderer, graphColor, graphShape, graphStroke); renderer.setBaseFillPaint(Color.BLACK); renderer.setSeriesOutlinePaint(0, Color.WHITE); //renderer.setUseOutlinePaint(true); plot.setRenderer(renderer); this.initialized = true; }
From source file:de.dal33t.powerfolder.ui.information.stats.StatsInformationCard.java
private JPanel getUsedPanel() { DateAxis domain = new DateAxis(Translation.getTranslation("stats_information_card.date")); TimeSeriesCollection series = new TimeSeriesCollection(); NumberAxis axis = new NumberAxis(Translation.getTranslation("stats_information_card.bandwidth")); series.addSeries(availableBandwidthSeries); series.addSeries(usedBandwidthSeries); series.addSeries(averageBandwidthSeries); XYItemRenderer renderer = new StandardXYItemRenderer(); XYPlot plot = new XYPlot(series, domain, axis, renderer); JFreeChart graph = new JFreeChart(plot); ChartPanel cp = new ChartPanel(graph); FormLayout layout = new FormLayout("3dlu, fill:pref:grow, 3dlu", "3dlu, pref , 3dlu, pref, 3dlu, fill:pref:grow, 3dlu"); DefaultFormBuilder builder = new DefaultFormBuilder(layout); CellConstraints cc = new CellConstraints(); JPanel p = buildUsedStatsControlPanel(); builder.add(p, cc.xy(2, 2));/*from w ww. j a va2s . c o m*/ builder.addSeparator(null, cc.xyw(1, 4, 3)); builder.add(cp, cc.xy(2, 6)); return builder.getPanel(); }
From source file:net.sourceforge.openforecast.examples.ExponentialSmoothingChartDemo.java
/** * Creates a dataset, consisting of two series of monthly data. * @return the dataset./*w w w. j a v a 2 s . co m*/ */ public XYDataset createDataset() { TimeSeries observations = new TimeSeries("Quarterly Sales", Quarter.class); observations.add(new Quarter(1, 1990), 362.0); observations.add(new Quarter(2, 1990), 385.0); observations.add(new Quarter(3, 1990), 432.0); observations.add(new Quarter(4, 1990), 341.0); observations.add(new Quarter(1, 1991), 382.0); observations.add(new Quarter(2, 1991), 409.0); observations.add(new Quarter(3, 1991), 498.0); observations.add(new Quarter(4, 1991), 387.0); observations.add(new Quarter(1, 1992), 473.0); observations.add(new Quarter(2, 1992), 513.0); observations.add(new Quarter(3, 1992), 582.0); observations.add(new Quarter(4, 1992), 474.0); observations.add(new Quarter(1, 1993), 544.0); observations.add(new Quarter(2, 1993), 582.0); observations.add(new Quarter(3, 1993), 681.0); observations.add(new Quarter(4, 1993), 557.0); observations.add(new Quarter(1, 1994), 628.0); observations.add(new Quarter(2, 1994), 707.0); observations.add(new Quarter(3, 1994), 773.0); observations.add(new Quarter(4, 1994), 592.0); observations.add(new Quarter(1, 1995), 627.0); observations.add(new Quarter(2, 1995), 725.0); observations.add(new Quarter(3, 1995), 854.0); observations.add(new Quarter(4, 1995), 661.0); fc = new TimeSeries("Forecast values", Quarter.class); fc.add(new Quarter(1, 1990), 0.0); fc.add(new Quarter(2, 1990), 0.0); fc.add(new Quarter(3, 1990), 0.0); fc.add(new Quarter(4, 1990), 0.0); fc.add(new Quarter(1, 1991), 0.0); fc.add(new Quarter(2, 1991), 0.0); fc.add(new Quarter(3, 1991), 0.0); fc.add(new Quarter(4, 1991), 0.0); fc.add(new Quarter(1, 1992), 0.0); fc.add(new Quarter(2, 1992), 0.0); fc.add(new Quarter(3, 1992), 0.0); fc.add(new Quarter(4, 1992), 0.0); fc.add(new Quarter(1, 1993), 0.0); fc.add(new Quarter(2, 1993), 0.0); fc.add(new Quarter(3, 1993), 0.0); fc.add(new Quarter(4, 1993), 0.0); fc.add(new Quarter(1, 1994), 0.0); fc.add(new Quarter(2, 1994), 0.0); fc.add(new Quarter(3, 1994), 0.0); fc.add(new Quarter(4, 1994), 0.0); fc.add(new Quarter(1, 1995), 0.0); fc.add(new Quarter(2, 1995), 0.0); fc.add(new Quarter(3, 1995), 0.0); fc.add(new Quarter(4, 1995), 0.0); fc.add(new Quarter(1, 1996), 0.0); fc.add(new Quarter(2, 1996), 0.0); fc.add(new Quarter(3, 1996), 0.0); fc.add(new Quarter(4, 1996), 0.0); fc.add(new Quarter(1, 1997), 0.0); fc.add(new Quarter(2, 1997), 0.0); fc.add(new Quarter(3, 1997), 0.0); fc.add(new Quarter(4, 1997), 0.0); fc.add(new Quarter(1, 1998), 0.0); fc.add(new Quarter(2, 1998), 0.0); fc.add(new Quarter(3, 1998), 0.0); fc.add(new Quarter(4, 1998), 0.0); DataSet initDataSet = getDataSet(observations, 0, 100); initDataSet.setTimeVariable("t"); initDataSet.setPeriodsPerYear(4); // Get "best fit" simple exponential smoothing model ForecastingModel sesModel = SimpleExponentialSmoothingModel.getBestFitModel(initDataSet); TimeSeries sesSeries = getForecastTimeSeries(sesModel, initDataSet, 0, 30, "Simple Exponential Smoothing"); // Get "best fit" double exponential smoothing model ForecastingModel desModel = DoubleExponentialSmoothingModel.getBestFitModel(initDataSet); TimeSeries desSeries = getForecastTimeSeries(desModel, initDataSet, 0, 30, "Double Exponential Smoothing"); // Get "best fit" triple exponential smoothing model ForecastingModel tesModel = TripleExponentialSmoothingModel.getBestFitModel(initDataSet); TimeSeries tesSeries = getForecastTimeSeries(tesModel, initDataSet, 5, 28, "Triple Exponential Smoothing"); TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(observations); dataset.addSeries(sesSeries); dataset.addSeries(desSeries); dataset.addSeries(tesSeries); return dataset; }
From source file:ca.myewb.frame.servlet.GraphServlet.java
private JFreeChart getDailyIntegratedStats(Session s) throws CloneNotSupportedException { JFreeChart chart;/*w w w.j a v a2 s. c o m*/ 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(); TimeSeriesCollection theData2 = new TimeSeriesCollection(); TimeSeries users = new TimeSeries("Total Users", Day.class); theData.addSeries(users); TimeSeries regulars = new TimeSeries("Regular Members", Day.class); theData2.addSeries(regulars); int numUsers = Helpers.getGroup("Org").getNumMembers(); int numReg = Helpers.getGroup("Regular").getNumMembers(); for (DailyStatsModel ds : stats) { Day theDay = new Day(ds.getDay()); users.add(theDay, numUsers); regulars.add(theDay, numReg); numUsers -= (ds.getMailinglistsignups() + ds.getSignups() - ds.getDeletions()); numReg -= (ds.getRegupgrades() - ds.getRegdowngrades()); } chart = ChartFactory.createTimeSeriesChart("Membership", "Day", "Users", theData, true, true, true); XYPlot plot = (XYPlot) chart.getPlot(); NumberAxis axis2 = new NumberAxis("Regular Members"); plot.setRangeAxis(1, axis2); plot.setRangeAxisLocation(1, AxisLocation.BOTTOM_OR_RIGHT); plot.setDataset(1, MovingAverage.createMovingAverage(theData2, "", 14, 0)); plot.mapDatasetToRangeAxis(1, 1); XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(0); renderer.setSeriesStroke(0, new BasicStroke(2.0f)); renderer = (XYLineAndShapeRenderer) renderer.clone(); renderer.setSeriesStroke(0, new BasicStroke(2.0f)); plot.setRenderer(1, renderer); return chart; }
From source file:nu.nethome.home.items.web.GraphServlet.java
/** * This is the main enterence point of the class. This is called when a http request is * routed to this servlet.// ww w .ja v a2 s . c o m */ public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { ServletOutputStream p = res.getOutputStream(); Date startTime = null; Date stopTime = null; // Analyse arguments String fileName = req.getParameter("file"); if (fileName != null) fileName = getFullFileName(fromURL(fileName)); String startTimeString = req.getParameter("start"); String stopTimeString = req.getParameter("stop"); try { if (startTimeString != null) { startTime = m_Format.parse(startTimeString); } if (stopTimeString != null) { stopTime = m_Format.parse(stopTimeString); } } catch (ParseException e1) { e1.printStackTrace(); } String look = req.getParameter("look"); if (look == null) look = ""; TimeSeries timeSeries = new TimeSeries("Data", Minute.class); // Calculate time window Calendar cal = Calendar.getInstance(); Date currentTime = cal.getTime(); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); Date startOfDay = cal.getTime(); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); Date startOfWeek = cal.getTime(); cal.set(Calendar.DAY_OF_MONTH, 1); Date startOfMonth = cal.getTime(); cal.set(Calendar.MONTH, Calendar.JANUARY); Date startOfYear = cal.getTime(); // if (startTime == null) startTime = startOfWeek; if (stopTime == null) stopTime = currentTime; if (startTime == null) startTime = new Date(stopTime.getTime() - 1000L * 60L * 60L * 24L * 2L); try { // Open the data file File logFile = new File(fileName); Scanner fileScanner = new Scanner(logFile); Long startTimeMs = startTime.getTime(); Long month = 1000L * 60L * 60L * 24L * 30L; boolean doOptimize = true; boolean justOptimized = false; try { while (fileScanner.hasNext()) { try { // Get next log entry String line = fileScanner.nextLine(); if (line.length() > 21) { // Adapt the time format String minuteTime = line.substring(0, 16).replace('.', '-'); // Parse the time stamp Minute min = Minute.parseMinute(minuteTime); // Ok, this is an ugly optimization. If the current time position in the file // is more than a month (30 days) ahead of the start of the time window, we // quick read two weeks worth of data, assuming that there is 4 samples per hour. // This may lead to scanning past start of window if there are holes in the data // series. if (doOptimize && ((startTimeMs - min.getFirstMillisecond()) > month)) { for (int i = 0; (i < (24 * 4 * 14)) && fileScanner.hasNext(); i++) { fileScanner.nextLine(); } justOptimized = true; continue; } // Detect if we have scanned past the window start position just after an optimization scan. // If this is the case it may be because of the optimization. In that case we have to switch // optimization off and start over. if ((min.getFirstMillisecond() > startTimeMs) && doOptimize && justOptimized) { logFile = new File(fileName); fileScanner = new Scanner(logFile); doOptimize = false; continue; } justOptimized = false; // Check if value is within time window if ((min.getFirstMillisecond() > startTimeMs) && (min.getFirstMillisecond() < stopTime.getTime())) { // Parse the value double value = Double.parseDouble((line.substring(20)).replace(',', '.')); // Add the entry timeSeries.add(min, value); doOptimize = false; } } } catch (SeriesException se) { // Bad entry, for example due to duplicates at daylight saving time switch } catch (NumberFormatException nfe) { // Bad number format in a line, try to continue } } } catch (Exception e) { System.out.println(e.toString()); } finally { fileScanner.close(); } } catch (FileNotFoundException f) { System.out.println(f.toString()); } // Create a collection for plotting TimeSeriesCollection data = new TimeSeriesCollection(); data.addSeries(timeSeries); JFreeChart chart; int xSize = 750; int ySize = 450; // Customize colors and look of the Graph. if (look.equals("mobtemp")) { // Look for the mobile GUI chart = ChartFactory.createTimeSeriesChart(null, null, null, data, false, false, false); XYPlot plot = chart.getXYPlot(); ValueAxis timeAxis = plot.getDomainAxis(); timeAxis.setAxisLineVisible(false); ValueAxis valueAxis = plot.getRangeAxis(0); valueAxis.setAxisLineVisible(false); xSize = 175; ySize = 180; } else { // Create a Chart with time range as heading SimpleDateFormat localFormat = new SimpleDateFormat(); String heading = localFormat.format(startTime) + " - " + localFormat.format(stopTime); chart = ChartFactory.createTimeSeriesChart(heading, null, null, data, false, false, false); Paint background = new Color(0x9D8140); chart.setBackgroundPaint(background); TextTitle title = chart.getTitle(); // fix title Font titleFont = title.getFont(); titleFont = titleFont.deriveFont(Font.PLAIN, (float) 14.0); title.setFont(titleFont); title.setPaint(Color.darkGray); XYPlot plot = chart.getXYPlot(); plot.setBackgroundPaint(background); plot.setDomainGridlinePaint(Color.darkGray); ValueAxis timeAxis = plot.getDomainAxis(); timeAxis.setAxisLineVisible(false); ValueAxis valueAxis = plot.getRangeAxis(0); valueAxis.setAxisLineVisible(false); plot.setRangeGridlinePaint(Color.darkGray); XYItemRenderer renderer = plot.getRenderer(0); renderer.setSeriesPaint(0, Color.darkGray); xSize = 750; ySize = 450; } try { res.setContentType("image/png"); res.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); res.setHeader("Pragma", "no-cache"); res.setStatus(HttpServletResponse.SC_OK); ChartUtilities.writeChartAsPNG(p, chart, xSize, ySize); } catch (IOException e) { System.err.println("Problem occurred creating chart."); } p.flush(); p.close(); return; }
From source file:dpnm.netmsuite.plc.manager.frontend.graph.TimeSeriesChartDemo1.java
/** * Creates a dataset, consisting of two series of monthly data. * @return The dataset.// www .java2s . c om */ private XYDataset createDataset() { /* * each 5 seconds, the data updated... * */ String firstGraph = ""; String secondGraph = ""; if (graphType == 1) { firstGraph = "InPackets"; secondGraph = "OutPackets"; TimeSeries s1 = new TimeSeries(firstGraph, Second.class); for (int i = 1; i < statisticInfos.size(); i++) { StatisticInfo pastInfo = (StatisticInfo) statisticInfos.elementAt(i - 1); StatisticInfo oneInfo = (StatisticInfo) statisticInfos.elementAt(i); long timeStamp = oneInfo._timeStamp; long gap = (oneInfo._timeStamp - pastInfo._timeStamp) / 1000; gap = gap == 0 ? 1 : gap; Date date = new Date(timeStamp); long inPkts = oneInfo._inPkts - pastInfo._inPkts; if (inPkts < 0) { pastInfo._inPkts = oneInfo._inPkts + 2 ^ 32 - pastInfo._inPkts; } inPkts = inPkts / gap; s1.add(new Second(date), inPkts); } TimeSeries s2 = new TimeSeries(secondGraph, Second.class); for (int i = 1; i < statisticInfos.size(); i++) { StatisticInfo pastInfo = (StatisticInfo) statisticInfos.elementAt(i - 1); StatisticInfo oneInfo = (StatisticInfo) statisticInfos.elementAt(i); long timeStamp = oneInfo._timeStamp; long gap = (oneInfo._timeStamp - pastInfo._timeStamp) / 1000; gap = gap == 0 ? 1 : gap; Date date = new Date(timeStamp); long outPkts = oneInfo._outPkts - pastInfo._outPkts; if (outPkts < 0) { pastInfo._outPkts = oneInfo._outPkts + 2 ^ 32 - pastInfo._outPkts; } outPkts = outPkts / gap; s2.add(new Second(date), outPkts); } TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(s1); dataset.addSeries(s2); dataset.setDomainIsPointsInTime(true); return dataset; } else if (graphType == 2) { firstGraph = "InBytes"; secondGraph = "OutBytes"; TimeSeries s1 = new TimeSeries(firstGraph, Second.class); for (int i = 1; i < statisticInfos.size(); i++) { StatisticInfo pastInfo = (StatisticInfo) statisticInfos.elementAt(i - 1); StatisticInfo oneInfo = (StatisticInfo) statisticInfos.elementAt(i); long timeStamp = oneInfo._timeStamp; long gap = (oneInfo._timeStamp - pastInfo._timeStamp) / 1000; gap = gap == 0 ? 1 : gap; Date date = new Date(timeStamp); long _inBytes = oneInfo._inBytes - pastInfo._inBytes; if (_inBytes < 0) { pastInfo._inBytes = oneInfo._inBytes + 2 ^ 32 - pastInfo._inBytes; } _inBytes = _inBytes / gap; s1.add(new Second(date), _inBytes); } TimeSeries s2 = new TimeSeries(secondGraph, Second.class); for (int i = 1; i < statisticInfos.size(); i++) { StatisticInfo pastInfo = (StatisticInfo) statisticInfos.elementAt(i - 1); StatisticInfo oneInfo = (StatisticInfo) statisticInfos.elementAt(i); long timeStamp = oneInfo._timeStamp; long gap = (oneInfo._timeStamp - pastInfo._timeStamp) / 1000; gap = gap == 0 ? 1 : gap; Date date = new Date(timeStamp); long _outBytes = oneInfo._outBytes - pastInfo._outBytes; if (_outBytes < 0) { pastInfo._outBytes = oneInfo._outBytes + 2 ^ 32 - pastInfo._outBytes; } _outBytes = _outBytes / gap; s2.add(new Second(date), _outBytes); } TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(s1); dataset.addSeries(s2); dataset.setDomainIsPointsInTime(true); return dataset; } else if (graphType == 3) { firstGraph = "InSpeed"; secondGraph = "OutSpeed"; TimeSeries s1 = new TimeSeries(firstGraph, Second.class); for (int i = 1; i < statisticInfos.size(); i++) { StatisticInfo pastInfo = (StatisticInfo) statisticInfos.elementAt(i - 1); StatisticInfo oneInfo = (StatisticInfo) statisticInfos.elementAt(i); long timeStamp = oneInfo._timeStamp; Date date = new Date(timeStamp); long _inSpeed = oneInfo._inSpeed; s1.add(new Second(date), _inSpeed); } TimeSeries s2 = new TimeSeries(secondGraph, Second.class); for (int i = 1; i < statisticInfos.size(); i++) { StatisticInfo pastInfo = (StatisticInfo) statisticInfos.elementAt(i - 1); StatisticInfo oneInfo = (StatisticInfo) statisticInfos.elementAt(i); long timeStamp = oneInfo._timeStamp; Date date = new Date(timeStamp); long _outSpeed = oneInfo._outSpeed; s2.add(new Second(date), _outSpeed); } TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(s1); dataset.addSeries(s2); dataset.setDomainIsPointsInTime(true); return dataset; } else { firstGraph = "Not Defiend"; secondGraph = "Not Defiend"; return null; } }
From source file:test.integ.be.fedict.performance.util.PerformanceResultDialog.java
private JFreeChart getPerformanceChart(int intervalSize, List<PerformanceData> performance, int expectedRevoked) { TimeSeries series = new TimeSeries("Success"); TimeSeries revokedSeries = new TimeSeries("Revoked"); TimeSeries failureSeries = new TimeSeries("Failures"); performance.remove(performance.size() - 1); if (performance.isEmpty()) { JOptionPane.showMessageDialog(null, "test did not run long enough"); return null; }// www. ja va 2s.co m JFreeChart chart; int totalCount = 0; int totalRevoked = 0; int totalFailures = 0; for (PerformanceData performanceEntry : performance) { series.add(new Second(performanceEntry.getDate()), performanceEntry.getCount()); totalCount += performanceEntry.getCount(); revokedSeries.add(new Second(performanceEntry.getDate()), performanceEntry.getRevoked()); totalRevoked += performanceEntry.getRevoked(); failureSeries.add(new Second(performanceEntry.getDate()), performanceEntry.getFailures()); totalFailures += performanceEntry.getFailures(); } TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(series); dataset.addSeries(revokedSeries); dataset.addSeries(failureSeries); chart = ChartFactory.createTimeSeriesChart("eID Trust Service Performance History", "Time (interval size " + intervalSize + " msec)", "Number of XKMS requests", dataset, true, false, false); chart.addSubtitle(new TextTitle(performance.get(0).getDate().toString() + " - " + performance.get(performance.size() - 1).getDate().toString())); TextTitle info = new TextTitle("Total number of successful requests: " + totalCount); info.setTextAlignment(HorizontalAlignment.LEFT); info.setPosition(RectangleEdge.BOTTOM); chart.addSubtitle(info); TextTitle info2 = new TextTitle( "Total number of revoked: " + totalRevoked + " expected=" + expectedRevoked); info2.setPosition(RectangleEdge.BOTTOM); info2.setTextAlignment(HorizontalAlignment.LEFT); chart.addSubtitle(info2); TextTitle info3 = new TextTitle("Total number of failures: " + totalFailures); info3.setPosition(RectangleEdge.BOTTOM); info3.setTextAlignment(HorizontalAlignment.LEFT); chart.addSubtitle(info3); chart.setBackgroundPaint(Color.WHITE); XYPlot plot = chart.getXYPlot(); plot.setBackgroundPaint(Color.WHITE); DateAxis axis = (DateAxis) plot.getDomainAxis(); axis.setDateFormatOverride(new SimpleDateFormat("HH:mm:ss")); ValueAxis valueAxis = plot.getRangeAxis(); valueAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(); plot.setRangeGridlinePaint(Color.black); plot.setDomainGridlinePaint(Color.black); plot.setRenderer(renderer); return chart; }
From source file:compecon.dashboard.panel.HouseholdsPanel.java
protected ChartPanel createLabourHourSupplyPanel(Currency currency) { TimeSeriesCollection timeSeriesCollection = new TimeSeriesCollection(); timeSeriesCollection.addSeries(ApplicationContext.getInstance().getModelRegistry() .getNationalEconomyModel(currency).householdsModel.labourHourCapacityModel.getTimeSeries()); timeSeriesCollection//from w w w. jav a 2 s . c o m .addSeries(ApplicationContext.getInstance().getModelRegistry().getNationalEconomyModel(currency) .getPricingBehaviourModel(GoodType.LABOURHOUR).offerModel.getTimeSeries()); timeSeriesCollection .addSeries(ApplicationContext.getInstance().getModelRegistry().getNationalEconomyModel(currency) .getPricingBehaviourModel(GoodType.LABOURHOUR).soldModel.getTimeSeries()); JFreeChart chart = ChartFactory.createTimeSeriesChart(GoodType.LABOURHOUR.toString() + " Supply", "Date", "Capacity & Output", (XYDataset) timeSeriesCollection, true, true, false); configureChart(chart); return new ChartPanel(chart); }