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

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

Introduction

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

Prototype

public void addSeries(TimeSeries series) 

Source Link

Document

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

Usage

From source file:net.sourceforge.openforecast.examples.ExponentialSmoothingChartDemo.java

/**
 * Creates a dataset, consisting of two series of monthly data.
 * @return the dataset./*from   w  ww  .j ava  2 s.c  om*/
 */
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:view.PrograssCharts.java

/**
 * Creates new form PrograssCharts/*from www  . j a v  a 2s  .  co  m*/
 */
public PrograssCharts(java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    try {
        initComponents();
        setSize(1400, 800);
        jPanel1.setVisible(false);
        jPanel2.setVisible(false);

        new Thread(new Runnable() {

            @Override
            public void run() {
                loading1();
                loading2();
                run();

            }
        }).start();

        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        DefaultCategoryDataset dataset1 = new DefaultCategoryDataset();
        dataset.setValue(QuestionLab.cat1, "gfdg", "Collectns");
        dataset.setValue(QuestionLab.cat2, "gfdg", "Data");
        dataset.setValue(QuestionLab.cat3, "gfdg", "Dev");
        dataset.setValue(QuestionLab.cat4, "gfdg", "Excep");
        dataset.setValue(QuestionLab.cat5, "gfdg", "File");
        dataset.setValue(QuestionLab.cat6, "gfdg", "FlowCon");
        dataset.setValue(QuestionLab.cat7, "gfdg", "Format");
        dataset.setValue(QuestionLab.cat8, "gfdg", "GC");
        dataset.setValue(QuestionLab.cat9, "gfdg", "IC");
        dataset.setValue(QuestionLab.cat10, "gfdg", "VarArgs");
        dataset.setValue(QuestionLab.cat11, "gfdg", "Fundamt");
        dataset.setValue(QuestionLab.cat12, "gfdg", "Modif");
        dataset.setValue(QuestionLab.cat13, "gfdg", "OOP");
        dataset.setValue(QuestionLab.cat14, "gfdg", "Vari");
        dataset.setValue(QuestionLab.cat15, "gfdg", "String");
        dataset.setValue(QuestionLab.cat16, "gfdg", "Threads");
        dataset.setValue(QuestionLab.cat17, "gfdg", "WC");
        JFreeChart freeChart = ChartFactory.createBarChart("Exam Prograss by Subjects", "Subject", "Marks",
                dataset, PlotOrientation.VERTICAL, false, true, false);
        //JFreeChart freeChart1 = ChartFactory.createBarChart("Income", " Name", "Incomesss", dataset1, PlotOrientation.VERTICAL, false, true, false);
        TimeSeries pop = new TimeSeries("Population", Day.class);

        //JFreeChart chart=ChartFactory.create
        CategoryPlot plot = freeChart.getCategoryPlot();
        plot.setRangeGridlinePaint(Color.BLUE);
        ChartFrame frame = new ChartFrame("Exam Prograss", freeChart);

        //        frame.setVisible(true);
        //        frame.setSize(550, 450);
        // JPanel jPanel1 = new JPanel();
        jPanel1.setLayout(new java.awt.BorderLayout());

        ChartPanel CP = new ChartPanel(freeChart);
        CP.setPreferredSize(new Dimension(785, 440));
        CP.setMouseWheelEnabled(true);

        jPanel1.add(CP);
        jPanel1.revalidate();

        ArrayList<Exam> setChartValue = ServerConnector.getServerConnector().getExamController()
                .getPreviousMarks(PracticeExamLogIn.studentNic);
        for (Exam exam : setChartValue) {
            //dataset1.setValue(exam.getMarks(), "gfdg9", exam.getDate());
            pop.addOrUpdate(new Day(exam.getDate()), exam.getMarks());
            System.out.println("mar" + exam.getMarks());
            System.out.println("date" + exam.getDate());
        }
        TimeSeriesCollection myDataset = new TimeSeriesCollection();
        myDataset.addSeries(pop);
        JFreeChart myChart = ChartFactory.createTimeSeriesChart("Population Your Marks", "Date", "Population",
                myDataset, true, true, false);
        //try {
        //ChartUtilities.saveChartAsJPEG(new File("C:\\chart.jpg"), chart, 500, 300);
        //} catch (IOException e) {
        //System.err.println("Problem occurred creating chart.");
        //}

        //JFreeChart chart=ChartFactory.create
        CategoryPlot plot1 = freeChart.getCategoryPlot();
        plot1.setRangeGridlinePaint(Color.BLUE);
        //ChartFrame frame1 = new ChartFrame("Exam Prograss", freeChart1);

        //        frame.setVisible(true);
        //        frame.setSize(550, 450);
        // JPanel jPanel1 = new JPanel();
        jPanel2.setLayout(new java.awt.BorderLayout());

        ChartPanel CP1 = new ChartPanel(myChart);
        CP1.setPreferredSize(new Dimension(785, 440));
        CP1.setMouseWheelEnabled(true);

        jPanel2.add(CP1);
        jPanel2.revalidate();

    } catch (RemoteException | ClassNotFoundException | SQLException | NotBoundException
            | MalformedURLException ex) {
        Logger.getLogger(PrograssCharts.class.getName()).log(Level.SEVERE, null, ex);
    }

}

From source file:compecon.dashboard.panel.IndustriesPanel.java

protected ChartPanel createCapitalDepreciationPanel(Currency currency, GoodType outputGoodType) {
    TimeSeriesCollection timeSeriesCollection = new TimeSeriesCollection();

    timeSeriesCollection
            .addSeries(ApplicationContext.getInstance().getModelRegistry().getNationalEconomyModel(currency)
                    .getIndustryModel(outputGoodType).capitalDepreciationModel.getTimeSeries());

    JFreeChart chart = ChartFactory.createTimeSeriesChart(outputGoodType.toString() + " Capital Depreciation",
            "Date", "Capital Depreciation", (XYDataset) timeSeriesCollection, true, true, false);
    configureChart(chart);//from   w  ww. ja v  a  2s .  c o m
    return new ChartPanel(chart);
}

From source file:edu.ucla.stat.SOCR.chart.demo.CrosshairDemo3.java

/**
 * Creates a dataset, consisting of two series of monthly data.
 *
 * @return the dataset.//w  w w . j av a 2s .c  o m
 */
protected XYDataset createDataset(boolean isDemo) {
    if (isDemo) {
        chartTitle = "Legal & General Unit Trust Prices";
        domainLabel = "Date";
        rangeLabel = "Price Per Unit";
        TimeSeries s1 = new TimeSeries("L&G European Index Trust", Month.class);
        s1.add(new Month(2, 2001), 181.8);
        s1.add(new Month(3, 2001), 167.3);
        s1.add(new Month(4, 2001), 153.8);
        s1.add(new Month(5, 2001), 167.6);
        s1.add(new Month(6, 2001), 158.8);
        s1.add(new Month(7, 2001), 148.3);
        s1.add(new Month(8, 2001), 153.9);
        s1.add(new Month(9, 2001), 142.7);
        s1.add(new Month(10, 2001), 123.2);
        s1.add(new Month(11, 2001), 131.8);
        s1.add(new Month(12, 2001), 139.6);
        s1.add(new Month(1, 2002), 142.9);
        s1.add(new Month(2, 2002), 138.7);
        s1.add(new Month(3, 2002), 137.3);
        s1.add(new Month(4, 2002), 143.9);
        s1.add(new Month(5, 2002), 139.8);
        s1.add(new Month(6, 2002), 137.0);
        s1.add(new Month(7, 2002), 132.8);

        TimeSeries s2 = new TimeSeries("L&G UK Index Trust", Month.class);
        s2.add(new Month(2, 2001), 129.6);
        s2.add(new Month(3, 2001), 123.2);
        s2.add(new Month(4, 2001), 117.2);
        s2.add(new Month(5, 2001), 124.1);
        s2.add(new Month(6, 2001), 122.6);
        s2.add(new Month(7, 2001), 119.2);
        s2.add(new Month(8, 2001), 116.5);
        s2.add(new Month(9, 2001), 112.7);
        s2.add(new Month(10, 2001), 101.5);
        s2.add(new Month(11, 2001), 106.1);
        s2.add(new Month(12, 2001), 110.3);
        s2.add(new Month(1, 2002), 111.7);
        s2.add(new Month(2, 2002), 111.0);
        s2.add(new Month(3, 2002), 109.6);
        s2.add(new Month(4, 2002), 113.2);
        s2.add(new Month(5, 2002), 111.6);
        s2.add(new Month(6, 2002), 108.8);
        s2.add(new Month(7, 2002), 101.6);

        TimeSeriesCollection dataset = new TimeSeriesCollection();
        dataset.addSeries(s1);
        dataset.addSeries(s2);

        //  dataset.setDomainIsPointsInTime(true);

        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(":")),
                        Month.class);
            else
                series = new TimeSeries(independentHeaders[ind], Month.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.parseMonth(x[i][ind]), y[i][ind]);
            }
            //collection.setDomainIsPointsInTime(false);
            collection.addSeries(series);
        }
        return collection;
    }

}

From source file:org.projectforge.statistics.TimesheetDisciplineChartBuilder.java

private JFreeChart create(final TimeSeries series1, final TimeSeries series2, final Shape shape,
        final Stroke stroke, final boolean showAxisValues, final String valueAxisUnitKey) {
    final TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(series1);
    dataset.addSeries(series2);//  www  . j  a va 2  s  . c  o  m
    final JFreeChart chart = ChartFactory.createXYLineChart(null, null, null, dataset, PlotOrientation.VERTICAL,
            true, true, false);

    final XYDifferenceRenderer renderer = new XYDifferenceRenderer(new Color(238, 176, 176),
            new Color(135, 206, 112), true);
    renderer.setSeriesPaint(0, new Color(222, 23, 33));
    renderer.setSeriesPaint(1, new Color(64, 169, 59));
    if (shape != null) {
        renderer.setSeriesShape(0, shape);
        renderer.setSeriesShape(1, shape);
    } else {
        final Shape none = new Rectangle();
        renderer.setSeriesShape(0, none);
        renderer.setSeriesShape(1, none);
    }
    renderer.setSeriesStroke(0, stroke);
    renderer.setSeriesStroke(1, stroke);
    renderer.setSeriesVisibleInLegend(0, false);
    renderer.setSeriesVisibleInLegend(1, false);
    final XYPlot plot = chart.getXYPlot();
    plot.setRenderer(renderer);
    plot.setBackgroundPaint(Color.white);
    plot.setDomainGridlinePaint(Color.lightGray);
    plot.setRangeGridlinePaint(Color.lightGray);
    final DateAxis xAxis = new DateAxis();
    xAxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);
    xAxis.setLowerMargin(0.0);
    xAxis.setUpperMargin(0.0);
    xAxis.setVisible(showAxisValues);
    plot.setDomainAxis(xAxis);
    final NumberAxis yAxis;
    if (showAxisValues == true) {
        yAxis = new NumberAxis(PFUserContext.getLocalizedString(valueAxisUnitKey));
    } else {
        yAxis = new NumberAxis();
    }
    yAxis.setVisible(showAxisValues);
    plot.setRangeAxis(yAxis);
    plot.setOutlineVisible(false);
    return chart;
}

From source file:test.integ.be.fedict.performance.util.PerformanceResultDialog.java

private JFreeChart getMemoryChart(int intervalSize, List<MemoryData> memory) {

    if (null == memory || memory.isEmpty()) {
        return null;
    }/*from   w  w w .j  a va 2 s .c o m*/

    JFreeChart chart;

    TimeSeries freeSeries = new TimeSeries("Free");
    TimeSeries maxSeries = new TimeSeries("Max");
    TimeSeries totalSeries = new TimeSeries("Total");

    memory.remove(memory.size() - 1);

    for (MemoryData memoryEntry : memory) {
        freeSeries.add(new Second(memoryEntry.getDate()), memoryEntry.getFreeMemory());

        maxSeries.add(new Second(memoryEntry.getDate()), memoryEntry.getMaxMemory());

        totalSeries.add(new Second(memoryEntry.getDate()), memoryEntry.getTotalMemory());
    }

    TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(freeSeries);
    dataset.addSeries(maxSeries);
    dataset.addSeries(totalSeries);
    chart = ChartFactory.createTimeSeriesChart("eID Trust Service Memory Usage History",
            "Time (interval size " + intervalSize + " msec)", "Memory", dataset, true, false, false);

    chart.addSubtitle(new TextTitle(
            memory.get(0).getDate().toString() + " - " + memory.get(memory.size() - 1).getDate().toString()));

    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.IndustriesPanel.java

protected ChartPanel createProductionPanel(Currency currency, GoodType outputGoodType) {
    TimeSeriesCollection timeSeriesCollection = new TimeSeriesCollection();

    timeSeriesCollection.addSeries(ApplicationContext.getInstance().getModelRegistry()
            .getNationalEconomyModel(currency).getIndustryModel(outputGoodType).outputModel.getTimeSeries());
    for (GoodType inputGoodType : ApplicationContext.getInstance().getModelRegistry()
            .getNationalEconomyModel(currency).getIndustryModel(outputGoodType).inputModels.keySet()) {
        timeSeriesCollection// www .  j  a  va2s. c o m
                .addSeries(ApplicationContext.getInstance().getModelRegistry().getNationalEconomyModel(currency)
                        .getIndustryModel(outputGoodType).inputModels.get(inputGoodType).getTimeSeries());
    }

    JFreeChart chart = ChartFactory.createTimeSeriesChart(outputGoodType.toString() + " Production", "Date",
            "Output", (XYDataset) timeSeriesCollection, true, true, false);
    configureChart(chart);
    chart.addSubtitle(new TextTitle("Inputs: " + ApplicationContext.getInstance().getInputOutputModel()
            .getProductionFunction(outputGoodType).getInputGoodTypes().toString()));
    return new ChartPanel(chart);
}

From source file:compecon.dashboard.panel.IndustriesPanel.java

protected ChartPanel createGoodTypeSupplyPanel(Currency currency, GoodType outputGoodType) {
    TimeSeriesCollection timeSeriesCollection = new TimeSeriesCollection();

    timeSeriesCollection
            .addSeries(ApplicationContext.getInstance().getModelRegistry().getNationalEconomyModel(currency)
                    .getPricingBehaviourModel(outputGoodType).offerModel.getTimeSeries());
    timeSeriesCollection/* ww  w  . ja v a 2  s.  co  m*/
            .addSeries(ApplicationContext.getInstance().getModelRegistry().getNationalEconomyModel(currency)
                    .getPricingBehaviourModel(outputGoodType).soldModel.getTimeSeries());
    timeSeriesCollection.addSeries(ApplicationContext.getInstance().getModelRegistry()
            .getNationalEconomyModel(currency).getIndustryModel(outputGoodType).inventoryModel.getTimeSeries());
    timeSeriesCollection.addSeries(ApplicationContext.getInstance().getModelRegistry()
            .getNationalEconomyModel(currency).getIndustryModel(outputGoodType).outputModel.getTimeSeries());

    JFreeChart chart = ChartFactory.createTimeSeriesChart(outputGoodType.toString() + " Supply", "Date",
            "Supply", (XYDataset) timeSeriesCollection, true, true, false);
    configureChart(chart);
    return new ChartPanel(chart);
}

From source file:org.jtotus.gui.graph.GraphPrinter.java

public void drawSeries(GraphPacket packet) {
    TimeSeries series = null;//from www .j  ava  2 s .c o  m

    if (seriesMap.containsKey(packet.seriesTitle)) { //Series Exists
        series = seriesMap.get(packet.seriesTitle);
    } else {
        series = this.createTimeSeries(packet);
        //FIXME: is it prefereable to add series after points are added ?
        TimeSeriesCollection collection = (TimeSeriesCollection) this.fetchPlot(packet.plotName).getDataset();
        collection.addSeries(series);
    }

    Iterator<StockUnit> iter = packet.results.iterator();
    while (iter.hasNext()) {
        //update if already existing series
        StockUnit unit = iter.next();
        if (unit.annotation != null) {
            final XYTextAnnotation annotation = new XYTextAnnotation(unit.annotation,
                    this.localDateToDay(unit.date).getMiddleMillisecond(), unit.value);
            annotation.setFont(new Font("SansSerif", Font.PLAIN, 9));
            this.fetchPlot(packet.plotName).addAnnotation(annotation);
        }

        series.addOrUpdate(this.localDateToDay(unit.date), unit.value);
    }
}

From source file:compecon.dashboard.panel.IndustriesPanel.java

protected ChartPanel createProductionFunctionMechanicsPanel(Currency currency, GoodType outputGoodType) {
    TimeSeriesCollection timeSeriesCollection = new TimeSeriesCollection();

    timeSeriesCollection.addSeries(ApplicationContext.getInstance().getModelRegistry()
            .getNationalEconomyModel(currency).getIndustryModel(outputGoodType).budgetModel.getTimeSeries());
    for (ConvexProductionFunctionTerminationCause terminationCause : ConvexProductionFunctionTerminationCause
            .values()) {/*from  w  w w . j a va2 s  .  co  m*/
        timeSeriesCollection
                .addSeries(ApplicationContext.getInstance().getModelRegistry().getNationalEconomyModel(currency)
                        .getIndustryModel(outputGoodType).convexProductionFunctionTerminationCauseModels
                                .get(terminationCause).getTimeSeries());
    }

    // budget is correct here, as the chart illustrates budget
    // emergence from these causes
    JFreeChart chart = ChartFactory.createTimeSeriesChart(
            outputGoodType.toString() + " Production Function Mechanics", "Date", "Budget Spent",
            (XYDataset) timeSeriesCollection, true, true, false);
    configureChart(chart);
    return new ChartPanel(chart);
}