List of usage examples for org.jfree.data.time TimeSeriesCollection addSeries
public void addSeries(TimeSeries series)
From source file:com.charts.ThreeMonthChart.java
public ThreeMonthChart(YStockQuote currentStock) throws ParseException { DateAxis domainAxis = new DateAxis("Date"); NumberAxis rangeAxis = new NumberAxis("Price"); CandlestickRenderer renderer = new CandlestickRenderer(); XYDataset dataset = getDataSet(currentStock); XYPlot mainPlot = new XYPlot(dataset, domainAxis, rangeAxis, renderer); //Do some setting up, see the API Doc renderer.setSeriesPaint(0, Color.BLACK); renderer.setDrawVolume(false);//from w ww. j ava2s. c om rangeAxis.setAutoRangeIncludesZero(false); domainAxis.setDateFormatOverride(new SimpleDateFormat("dd-MM-yy")); domainAxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE); //Now create the chart and chart panel JFreeChart chart = new JFreeChart(currentStock.get_name(), null, mainPlot, false); chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new Dimension(600, 300)); XYPlot plot = (XYPlot) chart.getPlot(); LegendTitle legend = new LegendTitle(plot); chart.addLegend(legend); chart.getLegend().setVisible(true); chart.getLegend().setPosition(RectangleEdge.BOTTOM); ValueAxis yAxis = (ValueAxis) plot.getRangeAxis(); DateAxis xAxis = (DateAxis) plot.getDomainAxis(); Date now = new Date(); SegmentedTimeline segmentedTimeline = SegmentedTimeline.newMondayThroughFridayTimeline(); Calendar[][] holidays = DayRange.getHolidayDates(); int len = holidays.length; for (int i = 0; i < holidays[0].length; i++) { Calendar day = Calendar.getInstance(TimeZone.getTimeZone("EST")); day.set(Calendar.YEAR, holidays[0][i].get(Calendar.YEAR)); day.set(Calendar.MONTH, holidays[0][i].get(Calendar.MONTH)); day.set(Calendar.DAY_OF_MONTH, holidays[0][i].get(Calendar.DAY_OF_MONTH)); day.set(Calendar.HOUR_OF_DAY, 9); segmentedTimeline.addException(day.getTime()); } xAxis.setTimeline(segmentedTimeline); //xAxis.setVerticalTickLabels(true); xAxis.setDateFormatOverride(new SimpleDateFormat("MMM y")); xAxis.setAutoTickUnitSelection(true); xAxis.setAutoRange(true); renderer.setAutoWidthFactor(0.5); renderer.setUpPaint(Color.green); renderer.setDownPaint(new Color(0xc0, 0x00, 0x00)); renderer.setSeriesPaint(0, Color.black); StandardXYItemRenderer renderer1 = new StandardXYItemRenderer(); renderer1.setSeriesPaint(0, Color.BLUE); TimeSeries movingAverage30 = MovingAverage.createMovingAverage(close, "MA(30)", 30, 0); Double currMA30 = (Double) movingAverage30.getDataItem(movingAverage30.getItemCount() - 1).getValue(); currMA30 = Math.round(currMA30 * 100.0) / 100.0; movingAverage30.setKey("MA(30): " + currMA30); TimeSeriesCollection collection = new TimeSeriesCollection(); collection.addSeries(movingAverage30); plot.setDataset(1, collection); plot.setRenderer(1, renderer1); chartPanel.revalidate(); chartPanel.repaint(); chartPanel.revalidate(); chartPanel.repaint(); }
From source file:edu.ucla.stat.SOCR.chart.demo.CrosshairDemo1.java
/** * Creates a sample dataset.//from w w w .j a v a 2s . c o m * * @param name the dataset name. * @param base the starting value. * @param start the starting period. * @param count the number of values to generate. * * @return The dataset. */ protected XYDataset createDataset(boolean isDemo) { if (isDemo) { String name = "Random 1"; double base = 100.0; RegularTimePeriod start = new Minute(); int count = 200; TimeSeries series = new TimeSeries(name, start.getClass()); RegularTimePeriod period = start; double value = base; for (int i = 0; i < count; i++) { series.add(period, value); period = period.next(); value = value * (1 + (Math.random() - 0.495) / 10.0); } TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(series); return dataset; } else { super.setArrayFromTable(); String[][] x = new String[xyLength][independentVarLength]; double[][] y = new double[xyLength][dependentVarLength]; int[][] skipy = new int[xyLength][dependentVarLength]; for (int index = 0; index < independentVarLength; index++) for (int i = 0; i < xyLength; i++) x[i][index] = indepValues[i][index]; for (int index = 0; index < dependentVarLength; index++) for (int i = 0; i < xyLength; i++) if (depValues[i][index] == null || depValues[i][index].length() == 0) skipy[i][index] = 1; else y[i][index] = Double.parseDouble(depValues[i][index]); // create the dataset... TimeSeriesCollection collection = new TimeSeriesCollection(); TimeSeries series; for (int ind = 0; ind < independentVarLength; ind++) { if (independentHeaders[ind].indexOf(":") != -1) series = new TimeSeries( independentHeaders[ind].substring(0, independentHeaders[ind].indexOf(":")), Minute.class); else series = new TimeSeries(independentHeaders[ind], Minute.class); //TimeSeries("Executions", "Year", "Count", Year.class); for (int i = 0; i < xyLength; i++) { if (x[i][ind] != null && y[i][ind] != 1) series.add(DateParser.parseMinute(x[i][ind]), y[i][ind]); } // collection.setDomainIsPointsInTime(false); collection.addSeries(series); } return collection; } }
From source file:com.charts.OneMonthChart.java
public OneMonthChart(YStockQuote currentStock) throws ParseException { DateAxis domainAxis = new DateAxis("Date"); NumberAxis rangeAxis = new NumberAxis("Price"); CandlestickRenderer renderer = new CandlestickRenderer(); XYDataset dataset = getDataSet(currentStock); XYPlot mainPlot = new XYPlot(dataset, domainAxis, rangeAxis, renderer); //Do some setting up, see the API Doc renderer.setSeriesPaint(0, Color.BLACK); renderer.setDrawVolume(false);//from w ww. j av a 2 s. c o m rangeAxis.setAutoRangeIncludesZero(false); domainAxis.setVerticalTickLabels(true); domainAxis.setDateFormatOverride(new SimpleDateFormat("dd-MM-yy")); domainAxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE); //Now create the chart and chart panel JFreeChart chart = new JFreeChart(currentStock.get_name(), null, mainPlot, false); chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new Dimension(600, 300)); XYPlot plot = (XYPlot) chart.getPlot(); LegendTitle legend = new LegendTitle(plot); chart.addLegend(legend); chart.getLegend().setVisible(true); chart.getLegend().setPosition(RectangleEdge.BOTTOM); ValueAxis yAxis = (ValueAxis) plot.getRangeAxis(); DateAxis xAxis = (DateAxis) plot.getDomainAxis(); Date now = new Date(); SegmentedTimeline segmentedTimeline = SegmentedTimeline.newMondayThroughFridayTimeline(); Calendar[][] holidays = DayRange.getHolidayDates(); int len = holidays.length; for (int i = 0; i < holidays[0].length; i++) { Calendar day = Calendar.getInstance(TimeZone.getTimeZone("EST")); day.set(Calendar.YEAR, holidays[0][i].get(Calendar.YEAR)); day.set(Calendar.MONTH, holidays[0][i].get(Calendar.MONTH)); day.set(Calendar.DAY_OF_MONTH, holidays[0][i].get(Calendar.DAY_OF_MONTH)); day.set(Calendar.HOUR_OF_DAY, 9); segmentedTimeline.addException(day.getTime()); } xAxis.setTimeline(segmentedTimeline); //xAxis.setVerticalTickLabels(true); xAxis.setDateFormatOverride(new SimpleDateFormat("MMM-dd")); xAxis.setAutoTickUnitSelection(false); xAxis.setAutoRange(false); renderer.setAutoWidthFactor(0.5); renderer.setUpPaint(Color.green); renderer.setDownPaint(new Color(0xc0, 0x00, 0x00)); renderer.setSeriesPaint(0, Color.black); StandardXYItemRenderer renderer1 = new StandardXYItemRenderer(); renderer1.setSeriesPaint(0, Color.BLUE); TimeSeries movingAverage30 = MovingAverage.createMovingAverage(close, "MA(30)", 30, 0); Double currMA30 = (Double) movingAverage30.getDataItem(movingAverage30.getItemCount() - 1).getValue(); currMA30 = Math.round(currMA30 * 100.0) / 100.0; movingAverage30.setKey("MA(30): " + currMA30); TimeSeriesCollection collection = new TimeSeriesCollection(); collection.addSeries(movingAverage30); plot.setDataset(1, collection); plot.setRenderer(1, renderer1); chartPanel.revalidate(); chartPanel.repaint(); chartPanel.revalidate(); chartPanel.repaint(); }
From source file:org.tolven.analysis.bean.PercentTimeSeriesBean.java
private JFreeChart getChart(String dataSeriesTitle, String targetSeriesTitle, List<MenuData> snapshots, Date fromDate, Date toDate, Class<?> intervalUnitClass) { TimeSeries dataTimeSeries = new TimeSeries(dataSeriesTitle); TimeSeries targetTimeSeries = null;/*www . j a va2s .c om*/ if (targetSeriesTitle != null) { targetTimeSeries = new TimeSeries(targetSeriesTitle); } for (MenuData snapshot : snapshots) { Date snapshotDate = snapshot.getDate01(); long nSnapshotresultsNumerator = snapshot.getLongField("normCount"); long nSnapshotresultsDenominator = snapshot.getLongField("allCount"); Double value = null; if (nSnapshotresultsDenominator == 0) { value = 0d; } else { value = 1d * nSnapshotresultsNumerator / nSnapshotresultsDenominator; } RegularTimePeriod regTimePeriod = RegularTimePeriod.createInstance(intervalUnitClass, snapshotDate, TimeZone.getDefault()); dataTimeSeries.addOrUpdate(regTimePeriod, value); if (targetTimeSeries != null) { Double targetPercent = snapshot.getDoubleField("targetPercent") / 100; targetTimeSeries.addOrUpdate(regTimePeriod, targetPercent); } } TimeSeriesCollection timeSeriesCollection = new TimeSeriesCollection(); timeSeriesCollection.addSeries(dataTimeSeries); if (targetTimeSeries != null) { timeSeriesCollection.addSeries(targetTimeSeries); } XYDataset xyDataset = (XYDataset) timeSeriesCollection; JFreeChart chart = ChartFactory.createTimeSeriesChart(null, // title null, // x-axis label null, // y-axis label xyDataset, // data true, // create legend? false, // generate tooltips? false // generate URLs? ); chart.setBackgroundPaint(Color.white); XYPlot plot = (XYPlot) chart.getPlot(); plot.setBackgroundPaint(Color.white); plot.setRangeGridlinesVisible(true); plot.setRangeGridlinePaint(Color.BLACK); plot.setDomainGridlinesVisible(false); XYItemRenderer r = plot.getRenderer(); XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r; renderer.setBaseShapesVisible(true); renderer.setBaseShapesFilled(true); renderer.setSeriesShape(0, new Ellipse2D.Double(-3, -3, 6, 6)); renderer.setSeriesPaint(0, Color.BLUE); renderer.setSeriesShape(1, new Rectangle2D.Double(-3, -3, 6, 6)); renderer.setSeriesPaint(1, Color.RED); NumberAxis vaxis = (NumberAxis) plot.getRangeAxis(); vaxis.setAutoRange(true); vaxis.setAxisLineVisible(true); vaxis.setNumberFormatOverride(NumberFormat.getPercentInstance()); vaxis.setTickMarksVisible(true); DateAxis daxis = (DateAxis) plot.getDomainAxis(); daxis.setRange(fromDate, toDate); if (intervalUnitClass == Month.class) { DateFormatSymbols dateFormatSymbols = new DateFormatSymbols(); dateFormatSymbols .setShortMonths(new String[] { "J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D" }); daxis.setDateFormatOverride(new SimpleDateFormat("MMM", dateFormatSymbols)); } return chart; }
From source file:com.charts.SixMonthChart.java
public SixMonthChart(YStockQuote currentStock) throws ParseException { DateAxis domainAxis = new DateAxis("Date"); NumberAxis rangeAxis = new NumberAxis("Price"); CandlestickRenderer renderer = new CandlestickRenderer(); XYDataset dataset = getDataSet(currentStock); XYPlot mainPlot = new XYPlot(dataset, domainAxis, rangeAxis, renderer); //Do some setting up, see the API Doc renderer.setSeriesPaint(0, Color.BLACK); renderer.setDrawVolume(false);//from w ww. j ava2s. com rangeAxis.setAutoRangeIncludesZero(false); domainAxis.setDateFormatOverride(new SimpleDateFormat("dd-MM-yy")); domainAxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE); //Now create the chart and chart panel JFreeChart chart = new JFreeChart(currentStock.get_name(), null, mainPlot, false); chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new Dimension(600, 300)); XYPlot plot = (XYPlot) chart.getPlot(); LegendTitle legend = new LegendTitle(plot); chart.addLegend(legend); chart.getLegend().setVisible(true); chart.getLegend().setPosition(RectangleEdge.BOTTOM); ValueAxis yAxis = (ValueAxis) plot.getRangeAxis(); DateAxis xAxis = (DateAxis) plot.getDomainAxis(); Date now = new Date(); SegmentedTimeline segmentedTimeline = SegmentedTimeline.newMondayThroughFridayTimeline(); Calendar[][] holidays = DayRange.getHolidayDates(); int len = holidays.length; for (int i = 0; i < holidays[0].length; i++) { Calendar day = Calendar.getInstance(TimeZone.getTimeZone("EST")); day.set(Calendar.YEAR, holidays[0][i].get(Calendar.YEAR)); day.set(Calendar.MONTH, holidays[0][i].get(Calendar.MONTH)); day.set(Calendar.DAY_OF_MONTH, holidays[0][i].get(Calendar.DAY_OF_MONTH)); day.set(Calendar.HOUR_OF_DAY, 9); segmentedTimeline.addException(day.getTime()); } xAxis.setTimeline(segmentedTimeline); //xAxis.setVerticalTickLabels(true); xAxis.setDateFormatOverride(new SimpleDateFormat("MMM y")); xAxis.setAutoTickUnitSelection(true); xAxis.setAutoRange(true); renderer.setAutoWidthFactor(0.5); renderer.setUpPaint(Color.green); renderer.setDownPaint(new Color(0xc0, 0x00, 0x00)); renderer.setSeriesPaint(0, Color.black); StandardXYItemRenderer renderer1 = new StandardXYItemRenderer(); renderer1.setSeriesPaint(0, Color.BLUE); TimeSeries movingAverage30 = MovingAverage.createMovingAverage(close, "MA(30)", 30, 0); Double currMA30 = (Double) movingAverage30.getDataItem(movingAverage30.getItemCount() - 1).getValue(); currMA30 = Math.round(currMA30 * 100.0) / 100.0; movingAverage30.setKey("MA(30): " + currMA30); TimeSeriesCollection collection = new TimeSeriesCollection(); collection.addSeries(movingAverage30); plot.setDataset(1, collection); plot.setRenderer(1, renderer1); chartPanel.revalidate(); chartPanel.repaint(); chartPanel.revalidate(); chartPanel.repaint(); }
From source file:com.joey.software.memoryToolkit.MemoryUsagePanel.java
/** * Creates a new application.//w w w .j a va 2 s. c o m * * @param historyCount * the history count (in milliseconds). */ public MemoryUsagePanel(int historyCount, int interval) { super(new BorderLayout()); // create two series that automatically discard data more than 30 // seconds old... this.total = new TimeSeries("Total Memory", Millisecond.class); this.total.setMaximumItemCount(historyCount); this.free = new TimeSeries("Free Memory", Millisecond.class); this.free.setMaximumItemCount(historyCount); this.used = new TimeSeries("Used Memory", Millisecond.class); this.used.setMaximumItemCount(historyCount); this.max = new TimeSeries("Used Memory", Millisecond.class); this.max.setMaximumItemCount(historyCount); TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(this.total); dataset.addSeries(this.free); dataset.addSeries(this.used); dataset.addSeries(this.max); DateAxis domain = new DateAxis("Time"); NumberAxis range = new NumberAxis("Memory"); domain.setTickLabelFont(new Font("SansSerif", Font.PLAIN, 12)); range.setTickLabelFont(new Font("SansSerif", Font.PLAIN, 12)); domain.setLabelFont(new Font("SansSerif", Font.PLAIN, 14)); range.setLabelFont(new Font("SansSerif", Font.PLAIN, 14)); XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false); renderer.setSeriesPaint(0, Color.red); renderer.setSeriesPaint(1, Color.green); renderer.setSeriesPaint(2, Color.black); renderer.setStroke(new BasicStroke(1f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)); XYPlot plot = new XYPlot(dataset, domain, range, renderer); plot.setBackgroundPaint(Color.lightGray); plot.setDomainGridlinePaint(Color.white); plot.setRangeGridlinePaint(Color.white); plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0)); domain.setAutoRange(true); domain.setLowerMargin(0.0); domain.setUpperMargin(0.0); domain.setTickLabelsVisible(true); range.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); JFreeChart chart = new JFreeChart("JVM Memory Usage", new Font("SansSerif", Font.BOLD, 24), plot, true); chart.setBackgroundPaint(Color.white); ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4), BorderFactory.createLineBorder(Color.black))); add(chartPanel); gen = new DataGenerator(interval); }
From source file:edu.ucla.stat.SOCR.chart.demo.DifferenceChartDemo1.java
/** * Creates a sample dataset./* w w w.j a v a 2 s . c om*/ * * @return A sample dataset. */ protected XYDataset createDataset(boolean isDemo) { if (isDemo) { TimeSeries series1 = new TimeSeries("Random 1"); TimeSeries series2 = new TimeSeries("Random 2"); double value1 = 0.0; double value2 = 0.0; Day day = new Day(); for (int i = 0; i < 200; i++) { value1 = value1 + Math.random() - 0.5; value2 = value2 + Math.random() - 0.5; series1.add(day, value1); series2.add(day, value2); day = (Day) day.next(); } TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(series1); dataset.addSeries(series2); return dataset; } else { super.setArrayFromTable(); String[][] x = new String[xyLength][independentVarLength]; double[][] y = new double[xyLength][dependentVarLength]; int[][] skipy = new int[xyLength][dependentVarLength]; for (int index = 0; index < independentVarLength; index++) for (int i = 0; i < xyLength; i++) x[i][index] = indepValues[i][index]; for (int index = 0; index < dependentVarLength; index++) for (int i = 0; i < xyLength; i++) { if (depValues[i][index] == null || depValues[i][index].length() == 0) skipy[i][index] = 1; else y[i][index] = Double.parseDouble(depValues[i][index]); } // create the dataset... TimeSeriesCollection collection = new TimeSeriesCollection(); TimeSeries series; for (int ind = 0; ind < independentVarLength; ind++) { if (independentHeaders[ind].indexOf(":") != -1) series = new TimeSeries( independentHeaders[ind].substring(0, independentHeaders[ind].indexOf(":")), Day.class); else { series = new TimeSeries(independentHeaders[ind], Day.class); //System.out.println("series name is "+independentHeaders[ind]); } //TimeSeries("Executions", "Year", "Count", Year.class); for (int i = 0; i < xyLength; i++) { if (x[i][ind] != null && skipy[i][ind] != 1) series.add(DateParser.parseDay(x[i][ind]), y[i][ind]); //System.out.println("adding"+DateParser.parseDay(x[i][ind])+","+ y[i][ind]); } // collection.setDomainIsPointsInTime(false); collection.addSeries(series); } return collection; } }
From source file:org.codehaus.mojo.chronos.chart.SummaryThroughputChartSource.java
private TimeSeriesCollection createThroughputDataset(ResourceBundle bundle, ReportConfig config) { TimeSeriesCollection dataset = new TimeSeriesCollection(); TimeSeries series = samples.createMovingThroughput(bundle.getString("chronos.label.throughput"), config.getResponsetimedivider()); dataset.addSeries(series); int avgDuration = config.getAverageduration(); String label = bundle.getString("chronos.label.average"); TimeSeries averageseries = MovingAverage.createMovingAverage(series, label, avgDuration, 0); dataset.addSeries(averageseries);//w w w .ja v a 2s . c o m return dataset; }
From source file:grafici.PrenotazioneTimeSeriesChart.java
/** * Creates a dataset, consisting of two series of monthly data. * /*from w w w . j av a2 s . co m*/ * @return The dataset. */ private static XYDataset createDataset(int tipo) { TimeSeriesCollection dataset = new TimeSeriesCollection(); System.out.println("grafico"); if (tipo == 2) { // anno 2010 TimeSeries s1 = new TimeSeries("2010"); for (Prenotazione item : VisitaDAO.getPrenotazioni(2010)) { if (s1.getDataItem(new Day(item.getDataOra())) == null) s1.addOrUpdate(new Day(item.getDataOra()), 1); else s1.addOrUpdate(new Day(item.getDataOra()), s1.getDataItem(new Day(item.getDataOra())).getValue().intValue() + 1); } // anno 2011 TimeSeries s2 = new TimeSeries("2011"); for (Prenotazione item : VisitaDAO.getPrenotazioni(2011)) { if (s2.getDataItem(new Day(item.getDataOra())) == null) s2.addOrUpdate(new Day(item.getDataOra()), 1); else s2.addOrUpdate(new Day(item.getDataOra()), s2.getDataItem(new Day(item.getDataOra())).getValue().intValue() + 1); } dataset.addSeries(s1); dataset.addSeries(s2); } else alertGraficoNonDisp(); return dataset; }
From source file:net.sourceforge.openforecast.examples.ForecastingChartDemo.java
/** * Creates a dataset, consisting of two series of monthly data. * @return the dataset.//from w w w.j av a 2s . c o 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); TimeSeries naiveSeries = getForecastTimeSeries(new NaiveForecastingModel(), initDataSet, 1, 25, "Naive forecast"); TimeSeries ma4Series = getForecastTimeSeries(new MovingAverageModel(4), initDataSet, 4, 28, "4 Period Moving Average"); TimeSeries ma8Series = getForecastTimeSeries(new MovingAverageModel(8), initDataSet, 8, 32, "8 Period Moving Average"); TimeSeries regressionSeries = getForecastTimeSeries(new RegressionModel("t"), initDataSet, 0, 100, "Linear regression"); TimeSeries polyRegressSeries = getForecastTimeSeries(new PolynomialRegressionModel("t", 4), initDataSet, 0, 100, "4th order polynomial regression"); TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(observations); dataset.addSeries(naiveSeries); dataset.addSeries(ma4Series); dataset.addSeries(ma8Series); dataset.addSeries(regressionSeries); dataset.addSeries(polyRegressSeries); return dataset; }