Example usage for org.jfree.chart.labels ItemLabelPosition ItemLabelPosition

List of usage examples for org.jfree.chart.labels ItemLabelPosition ItemLabelPosition

Introduction

In this page you can find the example usage for org.jfree.chart.labels ItemLabelPosition ItemLabelPosition.

Prototype

public ItemLabelPosition(ItemLabelAnchor itemLabelAnchor, TextAnchor textAnchor) 

Source Link

Document

Creates a new position record (with zero rotation).

Usage

From source file:org.jfree.eastwood.ChartEngine.java

/**
 * Creates a bar chart with the specified orientation and using the
 * specified renderer./* w w  w .jav a  2  s.c  o  m*/
 *
 * @param orientation  the plot orientation.
 * @param renderer     the renderer.
 *
 * @return A bar chart.
 */
private static JFreeChart createBarChart(PlotOrientation orientation, BarRenderer renderer) {
    GCategoryPlot plot = new GCategoryPlot();
    plot.setOrientation(orientation);
    JFreeChart chart = new JFreeChart(null, JFreeChart.DEFAULT_TITLE_FONT, plot, false);

    chart.setBackgroundPaint(Color.white);
    plot.setBackgroundPaint(null);
    plot.setRenderer(renderer);
    StandardBarPainter bp = new StandardBarPainter();
    renderer.setBarPainter(bp);
    renderer.setShadowVisible(false);
    renderer.setBasePaint(new Color(0xFFCC33));
    renderer.setAutoPopulateSeriesPaint(false);
    renderer.setItemLabelsVisible(true);
    renderer.setItemLabelGenerator(new GCategoryPlot.LabelGenerator());
    renderer.setItemLabelPaint(new Color(0x333435));
    renderer.setDrawBarOutline(false);
    renderer.setItemMargin(0.07);

    if (orientation == PlotOrientation.HORIZONTAL) {
        renderer.setPositiveItemLabelPosition(
                new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT));
        renderer.setPositiveItemLabelPositionFallback(
                new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_RIGHT));
    } else {
        renderer.setPositiveItemLabelPosition(
                new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER));
        renderer.setPositiveItemLabelPositionFallback(
                new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.TOP_CENTER));
    }

    GCategoryAxis xAxis = new GCategoryAxis();
    xAxis.setAxisLineVisible(true);
    xAxis.setTickLabelsVisible(false);
    xAxis.setMaximumCategoryLabelLines(5);
    plot.setDomainAxis(xAxis);
    GValueAxis yAxis = new GValueAxis();
    yAxis.setAxisLineVisible(true);
    yAxis.setTickLabelsVisible(false);
    yAxis.setTickMarksVisible(false);
    plot.setRangeAxis(yAxis);
    plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
    plot.setDomainGridlinesVisible(false);
    plot.setRangeGridlinesVisible(false);
    return chart;
}

From source file:edu.dlnu.liuwenpeng.ChartFactory.ChartFactory.java

/**    
* Creates a bar chart.  The chart object returned by this method uses a     
* {@link CategoryPlot} instance as the plot, with a {@link CategoryAxis}     
* for the domain axis, a {@link NumberAxis} as the range axis, and a     
* {@link BarRenderer} as the renderer.    
*    /*from  w w w .  j a v  a 2 s  .  com*/
* @param title  the chart title (<code>null</code> permitted).    
* @param categoryAxisLabel  the label for the category axis     
*                           (<code>null</code> permitted).    
* @param valueAxisLabel  the label for the value axis     
*                        (<code>null</code> permitted).    
* @param dataset  the dataset for the chart (<code>null</code> permitted).    
* @param orientation  the plot orientation (horizontal or vertical)     
*                     (<code>null</code> not permitted).    
* @param legend  a flag specifying whether or not a legend is required.    
* @param tooltips  configure chart to generate tool tips?    
* @param urls  configure chart to generate URLs?    
*    
* @return A bar chart.    
*/
public static JFreeChart createBarChart(String title, String categoryAxisLabel, String valueAxisLabel,
        CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) {

    if (orientation == null) {
        throw new IllegalArgumentException("Null 'orientation' argument.");
    }
    CategoryAxis categoryAxis = new CategoryAxis(categoryAxisLabel);
    ValueAxis valueAxis = new NumberAxis(valueAxisLabel);

    BarRenderer renderer = new BarRenderer();
    if (orientation == PlotOrientation.HORIZONTAL) {
        ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT);
        renderer.setBasePositiveItemLabelPosition(position1);
        ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9, TextAnchor.CENTER_RIGHT);
        renderer.setBaseNegativeItemLabelPosition(position2);
    } else if (orientation == PlotOrientation.VERTICAL) {
        ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
                TextAnchor.BOTTOM_CENTER);
        renderer.setBasePositiveItemLabelPosition(position1);
        ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER);
        renderer.setBaseNegativeItemLabelPosition(position2);
    }
    if (tooltips) {
        renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
    }
    if (urls) {
        renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator());
    }

    CategoryPlot plot = new CategoryPlot(dataset, categoryAxis, valueAxis, renderer);
    plot.setOrientation(orientation);
    JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, legend);

    return chart;

}

From source file:org.oscarehr.web.reports.ocan.NeedRatingOverTimeReportGenerator.java

private JFreeChart generateNeedsOverTimeChart() {

    CategoryDataset dataset = this.createDataset();

    JFreeChart chart = ChartFactory.createStackedBarChart("Needs over Time (Consumer and Staff)", // chart title
            "Assessments", // x axis label
            "# of Domain", // y axis label
            dataset, // data
            PlotOrientation.VERTICAL, true, // include legend
            true, // tooltips
            false // urls
    );/*from  ww w .  ja  v  a  2 s .co m*/

    chart.setBackgroundPaint(Color.LIGHT_GRAY);

    GroupedStackedBarRenderer renderer = new GroupedStackedBarRenderer();
    KeyToGroupMap map = new KeyToGroupMap("G1");
    map.mapKeyToGroup("Consumer (Unknown)", "G1");
    map.mapKeyToGroup("Consumer (No Needs)", "G1");
    map.mapKeyToGroup("Consumer (Met Needs)", "G1");
    map.mapKeyToGroup("Consumer (Unmet Needs)", "G1");

    map.mapKeyToGroup("Staff (Unknown)", "G2");
    map.mapKeyToGroup("Staff (No Needs)", "G2");
    map.mapKeyToGroup("Staff (Met Needs)", "G2");
    map.mapKeyToGroup("Staff (Unmet Needs)", "G2");

    renderer.setSeriesToGroupMap(map);
    renderer.setItemMargin(0.1);
    //renderer.setItemLabelsVisible(true);
    renderer.setMaximumBarWidth(15);

    Paint p1 = Color.GREEN;
    renderer.setSeriesPaint(0, p1);
    renderer.setSeriesPaint(4, p1);
    renderer.setSeriesPaint(7, p1);

    Paint p2 = Color.BLUE;
    renderer.setSeriesPaint(1, p2);
    renderer.setSeriesPaint(5, p2);
    renderer.setSeriesPaint(8, p2);

    Paint p3 = new Color(255, 255, 153);
    renderer.setSeriesPaint(2, p3);
    renderer.setSeriesPaint(6, p3);
    renderer.setSeriesPaint(9, p3);

    Paint p4 = Color.ORANGE;
    renderer.setSeriesPaint(3, p4);
    renderer.setSeriesPaint(7, p4);
    renderer.setSeriesPaint(10, p4);

    SubCategoryAxis domainAxis = new SubCategoryAxis("Assessments");
    domainAxis.setCategoryMargin(0.05);
    domainAxis.addSubCategory("Consumer");
    domainAxis.addSubCategory("Staff");
    domainAxis.setMinorTickMarkInsideLength(10);
    domainAxis.setMinorTickMarkInsideLength(10);
    domainAxis.setMinorTickMarksVisible(true);

    CategoryPlot plot = (CategoryPlot) chart.getPlot();
    plot.setDomainAxis(domainAxis);
    plot.setRenderer(renderer);

    LegendItemCollection result = new LegendItemCollection();
    LegendItem item1 = new LegendItem("Unknown", Color.GREEN);
    LegendItem item2 = new LegendItem("No Needs", Color.BLUE);
    LegendItem item3 = new LegendItem("Met Needs", new Color(255, 255, 153));
    LegendItem item4 = new LegendItem("Unmet Needs", Color.ORANGE);

    result.add(item1);
    result.add(item2);
    result.add(item3);
    result.add(item4);

    plot.setFixedLegendItems(result);
    plot.setBackgroundPaint(Color.lightGray);
    plot.setRangeGridlinePaint(Color.black);

    NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
    rangeAxis.setRange(new Range(0, 24), true, false);
    rangeAxis.setTickUnit(new NumberTickUnit(4));

    plot.getDomainAxis().setCategoryMargin(0.35);

    renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer.setBaseItemLabelsVisible(true);
    renderer.setBasePositiveItemLabelPosition(
            new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.BASELINE_LEFT));

    return chart;
}

From source file:org.jfree.eastwood.ChartEngine.java

/**
 * Creates a bar chart with the specified orientation and using the
 * specified renderer./*from   ww  w .ja v  a 2 s . c  om*/
 *
 * @param orientation  the plot orientation.
 * @param renderer     the renderer.
 *
 * @return A bar chart.
 */
private static JFreeChart createBarChart3D(PlotOrientation orientation, BarRenderer renderer) {
    GCategoryPlot plot = new GCategoryPlot();
    plot.setOrientation(orientation);
    if (orientation.equals(PlotOrientation.HORIZONTAL)) {
        plot.setColumnRenderingOrder(SortOrder.DESCENDING);
    }
    JFreeChart chart = new JFreeChart(null, JFreeChart.DEFAULT_TITLE_FONT, plot, false);

    chart.setBackgroundPaint(Color.white);
    plot.setBackgroundPaint(null);
    plot.setRenderer(renderer);
    renderer.setBasePaint(new Color(0xFFCC33));
    renderer.setAutoPopulateSeriesPaint(false);
    renderer.setBasePaint(new Color(0xFFCC33));
    renderer.setAutoPopulateSeriesPaint(false);
    renderer.setItemLabelsVisible(true);
    renderer.setItemLabelGenerator(new GCategoryPlot.LabelGenerator());
    renderer.setItemLabelPaint(new Color(0x333435));

    if (orientation == PlotOrientation.HORIZONTAL) {
        renderer.setPositiveItemLabelPosition(
                new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT));
        renderer.setPositiveItemLabelPositionFallback(
                new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_RIGHT));
    } else {
        renderer.setPositiveItemLabelPosition(
                new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER));
        renderer.setPositiveItemLabelPositionFallback(
                new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.TOP_CENTER));
    }

    GCategoryAxis3D xAxis = new GCategoryAxis3D();
    xAxis.setAxisLineVisible(true);
    xAxis.setTickLabelsVisible(false);
    xAxis.setMaximumCategoryLabelLines(5);
    plot.setDomainAxis(xAxis);
    GValueAxis3D yAxis = new GValueAxis3D();
    yAxis.setAxisLineVisible(true);
    yAxis.setTickLabelsVisible(false);
    yAxis.setTickMarksVisible(false);
    plot.setRangeAxis(yAxis);
    plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
    plot.setDomainGridlinesVisible(false);
    plot.setRangeGridlinesVisible(false);
    return chart;
}

From source file:KIDLYFactory.java

/**
 * Creates a bar chart.  The chart object returned by this method uses a
 * {@link CategoryPlot} instance as the plot, with a {@link CategoryAxis}
 * for the domain axis, a {@link NumberAxis} as the range axis, and a
 * {@link BarRenderer} as the renderer./*from   w ww  .j  a v  a 2  s  .  c  om*/
 *
 * @param title  the chart title (<code>null</code> permitted).
 * @param categoryAxisLabel  the label for the category axis
 *                           (<code>null</code> permitted).
 * @param valueAxisLabel  the label for the value axis
 *                        (<code>null</code> permitted).
 * @param dataset  the dataset for the chart (<code>null</code> permitted).
 * @param orientation  the plot orientation (horizontal or vertical)
 *                     (<code>null</code> not permitted).
 * @param legend  a flag specifying whether or not a legend is required.
 * @param tooltips  configure chart to generate tool tips?
 * @param urls  configure chart to generate URLs?
 *
 * @return A bar chart.
 */
public static JFreeChart createBarChart(String title, String categoryAxisLabel, String valueAxisLabel,
        CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) {

    if (orientation == null) {
        throw new IllegalArgumentException("Null 'orientation' argument.");
    }
    CategoryAxis categoryAxis = new CategoryAxis(categoryAxisLabel);
    ValueAxis valueAxis = new NumberAxis(valueAxisLabel);

    KIDLYRenderer renderer = new KIDLYRenderer();
    if (orientation == PlotOrientation.HORIZONTAL) {
        ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT);
        renderer.setBasePositiveItemLabelPosition(position1);
        ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9, TextAnchor.CENTER_RIGHT);
        renderer.setBaseNegativeItemLabelPosition(position2);
    } else if (orientation == PlotOrientation.VERTICAL) {
        ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
                TextAnchor.BOTTOM_CENTER);
        renderer.setBasePositiveItemLabelPosition(position1);
        ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER);
        renderer.setBaseNegativeItemLabelPosition(position2);
    }
    if (tooltips) {
        renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
    }
    if (urls) {
        renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator());
    }

    CategoryPlot plot = new CategoryPlot(dataset, categoryAxis, valueAxis, renderer);
    plot.setOrientation(orientation);
    JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, legend);
    currentTheme.apply(chart);
    return chart;

}

From source file:org.pentaho.platform.uifoundation.chart.JFreeChartEngine.java

private static JFreeChart createBarChart(final CategoryDatasetChartDefinition chartDefinition) {
    // TODO Make the following accessible from the chartDefinition
    String categoryAxisLabel = null;
    String valueAxisLabel = null;
    boolean tooltips = true;
    boolean urls = true;
    // -----------------------------------------------------------

    String title = chartDefinition.getTitle();
    boolean legend = chartDefinition.isLegendIncluded();
    PlotOrientation orientation = chartDefinition.getOrientation();

    CategoryAxis categoryAxis = new CategoryAxis(categoryAxisLabel);
    ValueAxis valueAxis = new NumberAxis(valueAxisLabel);
    BarRenderer renderer = null;// w  w  w  .jav  a 2s .c  om
    // Determine the type of renderer to use
    if (chartDefinition.isStacked() || chartDefinition.isThreeD()) {
        if (chartDefinition.isStacked() && chartDefinition.isThreeD()) {
            renderer = new StackedBarRenderer3D();
        } else if (chartDefinition.isStacked()) {
            renderer = new StackedBarRenderer();
        } else {
            renderer = new BarRenderer3D();
        }
    } else {
        renderer = new BarRenderer();
    }
    if (orientation == PlotOrientation.HORIZONTAL) {
        ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT);
        renderer.setPositiveItemLabelPosition(position1);
        ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9, TextAnchor.CENTER_RIGHT);
        renderer.setNegativeItemLabelPosition(position2);
    } else if (orientation == PlotOrientation.VERTICAL) {
        ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
                TextAnchor.BOTTOM_CENTER);
        renderer.setPositiveItemLabelPosition(position1);
        ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER);
        renderer.setNegativeItemLabelPosition(position2);
    }
    if (tooltips) {
        renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
    }
    if (urls) {
        renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator());
    }

    if (chartDefinition.getMaxBarWidth() != null) {
        renderer.setMaximumBarWidth(chartDefinition.getMaxBarWidth().doubleValue());
    }

    CategoryPlot plot = new CategoryPlot(chartDefinition, categoryAxis, valueAxis, renderer);
    JFreeChartEngine.updatePlot(plot, chartDefinition);

    JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, legend);

    return chart;

}

From source file:org.pentaho.platform.uifoundation.chart.JFreeChartEngine.java

private static JFreeChart createBarLineChart(final BarLineChartDefinition chartDefinition) {
    // TODO Make the following accessible from the chartDefinition
    String categoryAxisLabel = null;
    String valueAxisLabel = null;
    String secondValueAxisLabel = null;
    boolean tooltips = true;
    boolean urls = true;
    // -----------------------------------------------------------
    String title = chartDefinition.getTitle();
    boolean legend = chartDefinition.isLegendIncluded();
    PlotOrientation orientation = chartDefinition.getOrientation();

    // split BarLineChartDefinition in two Definitions
    CategoryDatasetChartDefinition barsDataset = new CategoryDatasetChartDefinition(
            chartDefinition.getSession(), chartDefinition.getChartAttributes());
    CategoryDatasetChartDefinition linesDataset = new CategoryDatasetChartDefinition(
            chartDefinition.getSession(), chartDefinition.getChartAttributes());

    /*/*  www . jav  a 2s  .c  o m*/
     * try{ barsDataset = (CategoryDatasetChartDefinition)chartDefinition.clone(); linesDataset =
     * (CategoryDatasetChartDefinition)chartDefinition.clone(); }catch(Exception e){}
     */

    // get column and row count of the data set
    int iColumnCount = chartDefinition.getColumnCount();
    int iRowCount = chartDefinition.getRowCount();

    if (iRowCount <= 0) {
        chartDefinition.setNoDataMessage(Messages.getInstance().getString("CHART.USER_NO_DATA_AVAILABLE")); //$NON-NLS-1$
    }

    /*
     * Copy data to the two new data sets
     */
    // Loop through columns
    for (int r = 0; r < iRowCount; r++) {

        // check if measure should be include in bar or line dataset
        String strMeasureName = (String) chartDefinition.getRowKey(r);
        boolean bIsBarColumn = JFreeChartEngine.isBarColumn(chartDefinition.getBarColumns(), strMeasureName);
        boolean bIsLineColumn = JFreeChartEngine.isLineColumn(chartDefinition.getLineColumns(), strMeasureName);

        // getting all values
        for (int c = 0; c < iColumnCount; c++) {
            Comparable compColumnName = chartDefinition.getColumnKey(c);
            Number nValue = chartDefinition.getValue(strMeasureName, compColumnName);
            if (bIsBarColumn) {
                barsDataset.addValue(nValue, strMeasureName, compColumnName);
            }
            if (bIsLineColumn) {
                linesDataset.addValue(nValue, strMeasureName, compColumnName);
            }
        }

    }

    if ((iRowCount > 0) && (barsDataset.getRowCount() <= 0) && (linesDataset.getRowCount() <= 0)) {
        chartDefinition.setNoDataMessage(Messages.getInstance().getString("CHART.USER_INCORRECT_DATA_FORMAT")); //$NON-NLS-1$
    }

    // Create Axis Objects
    CategoryAxis catAxis = new CategoryAxis(categoryAxisLabel);
    NumberAxis barsAxis = new NumberAxis(valueAxisLabel);
    NumberAxis linesAxis = new NumberAxis(secondValueAxisLabel);

    // set title and font for lines Axis
    linesDataset.setRangeTitle(chartDefinition.getLinesRangeTitle());
    linesDataset.setRangeTitleFont(chartDefinition.getLinesRangeTitleFont());
    if (chartDefinition.getLinesRangeTickFormat() != null) {
        linesAxis.setNumberFormatOverride(chartDefinition.getLinesRangeTickFormat());
    }

    // create renderer
    BarRenderer barRenderer = null;
    LineAndShapeRenderer lineRenderer = null;
    // Determine the type of renderer to use
    if (chartDefinition.isStacked() || chartDefinition.isThreeD()) {
        if (chartDefinition.isStacked() && chartDefinition.isThreeD()) {
            barRenderer = new StackedBarRenderer3D();
            lineRenderer = new LineRenderer3D();
        } else if (chartDefinition.isStacked()) {
            barRenderer = new StackedBarRenderer();
            lineRenderer = new LineAndShapeRenderer();
        } else {
            barRenderer = new BarRenderer3D();
            lineRenderer = new LineRenderer3D();
        }
    } else {
        barRenderer = new BarRenderer();
        lineRenderer = new LineAndShapeRenderer();
    }
    if (orientation == PlotOrientation.HORIZONTAL) {
        ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT);
        barRenderer.setPositiveItemLabelPosition(position1);
        lineRenderer.setPositiveItemLabelPosition(position1);
        ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9, TextAnchor.CENTER_RIGHT);
        barRenderer.setNegativeItemLabelPosition(position2);
        lineRenderer.setNegativeItemLabelPosition(position2);
    } else if (orientation == PlotOrientation.VERTICAL) {
        ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
                TextAnchor.BOTTOM_CENTER);
        barRenderer.setPositiveItemLabelPosition(position1);
        lineRenderer.setPositiveItemLabelPosition(position1);
        ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER);
        barRenderer.setNegativeItemLabelPosition(position2);
        lineRenderer.setNegativeItemLabelPosition(position2);
    }
    if (tooltips) {
        barRenderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
        lineRenderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
    }
    if (urls) {
        barRenderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator());
        lineRenderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator());
    }

    if (chartDefinition.getMaxBarWidth() != null) {
        barRenderer.setMaximumBarWidth(chartDefinition.getMaxBarWidth().doubleValue());
    }

    // setting some line attributes
    lineRenderer.setStroke(JFreeChartEngine.getLineStyleStroke(chartDefinition.getLineStyle(),
            chartDefinition.getLineWidth()));
    lineRenderer.setShapesVisible(chartDefinition.isMarkersVisible());
    lineRenderer.setBaseShapesFilled(chartDefinition.isMarkersVisible());

    /*
     * Create plot and make necessary adjustments for overlaid chart
     */
    // create the plot with bar chart
    CategoryPlot plot = new CategoryPlot(barsDataset, catAxis, barsAxis, barRenderer);
    // add line renderer
    plot.setRenderer(1, lineRenderer);
    // add lines dataset, renderer and axis to plot
    plot.setDataset(1, linesDataset);
    plot.setRangeAxis(1, linesAxis);
    // map lines to second axis
    plot.mapDatasetToRangeAxis(1, 1);
    // set rendering order
    plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
    // set location of second axis
    plot.setRangeAxisLocation(1, AxisLocation.BOTTOM_OR_RIGHT);

    // standard settings for plots
    JFreeChartEngine.updatePlot(plot, barsDataset);
    // additional settings for second axis
    ValueAxis secondValueAxis = plot.getRangeAxis(1);

    if (secondValueAxis != null) {
        if (chartDefinition.getLinesRangeTitle() != null) {
            secondValueAxis.setLabel(chartDefinition.getLinesRangeTitle());
        }
        if (chartDefinition.getLinesRangeTitleFont() != null) {
            secondValueAxis.setLabelFont(chartDefinition.getLinesRangeTitleFont());
        }
        if (chartDefinition.getLinesRangeTickFont() != null) {
            secondValueAxis.setTickLabelFont(chartDefinition.getLinesRangeTickFont());
        }
        if (chartDefinition.getLinesRangeMinimum() != ValueAxis.DEFAULT_LOWER_BOUND) {
            secondValueAxis.setLowerBound(chartDefinition.getLinesRangeMinimum());
        }
        if (chartDefinition.getLinesRangeMaximum() != ValueAxis.DEFAULT_UPPER_BOUND) {
            secondValueAxis.setUpperBound(chartDefinition.getLinesRangeMaximum());
        }
    }

    JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, legend);

    return chart;
}

From source file:cnu.eslab.fileTest.NewJFrame.java

@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if (e.getSource() == mFileBtn) {
        if (mJFileChooser != null) {
            //  ? ??    ?.
            if (mFileName != null) {
                String dir = mFileName.getAbsolutePath(); //  ?? 
                //   .
                mJFileChooser = new JFileChooser(dir);
            }/*  www  .j  ava 2 s.co  m*/
            int returnVal = mJFileChooser.showOpenDialog(this);

            if (returnVal != JFileChooser.APPROVE_OPTION)
                return; //     .

            mFileName = mJFileChooser.getSelectedFile();
            mFilePathTextField.setText(mFileName.getAbsolutePath());

        }
    } else if (e.getSource() == mGPSCheckBox) {
        FLAG_GPS_STATE = mGPSCheckBox.isSelected();
    } else if (e.getSource() == mAudioCheckBox) {
        FLAG_AUDIO_STATE = mAudioCheckBox.isSelected();
    } else if (e.getSource() == mParsingBtn) {
        // List  .
        listModel.clear();
        //   ? ?? ?  .
        mCFileStream.setFileName(mFileName.getAbsolutePath());
        // UID  ? . ?   .
        try {
            mUidArrayList = mCFileStream.ParsingUID();
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        for (int i = 0; i < mUidArrayList.size(); i++) {
            listModel.addElement(mUidArrayList.get(i));
        }
    } else if (e.getSource() == mTotalPowerBtn) {
        try {
            int LastUnit = 50; //  ?   ?.
            double totalSum = 0.0, mean = 0.0;
            // ? ?  .
            mTotalPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_POWER);
            // ? .
            mTimeArrayList = mCFileStream.ParsingTime();
            //?  
            PrintWriter out = new PrintWriter(new FileWriter("TotalPower.txt"));
            for (int i = 0; i < mTotalPowerArrayList.size(); i++) {
                out.printf("%s %d\n", mTimeArrayList.get(i), mTotalPowerArrayList.get(i));
                out.flush();
            }
            out.close();

            /*
            // 50  ??  .
            for (int i = 0; i < mTotalPowerArrayList.size(); i += 50) {
               totalSum = 0.0; //  .
               mean = 0.0;
               for (int j = 0; j < 50; j++) {
                  if ((j + i) >= mTotalPowerArrayList.size()) {
             LastUnit = j;
             break; // ???   .
                  }
                  totalSum += mTotalPowerArrayList.get(j + i);
               }
               mean = totalSum / LastUnit;
               System.out.printf("%f\n", mean);
            }*/

            LineGraphGenerate(mTotalPowerArrayList, "Line Graph", "Total Power Consumption",
                    "Total Power Value");
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
    //?  stack   ? 
    else if (e.getSource() == mPhoneTotalStackPowerBtn) {
        try {

            // ? 
            if (listModelUidDelte.getSize() == 0) {
                //? H/W component  Stack Grap? . ? Grap? Line? ? ? ?.
                StackedXYAreaRenderer(mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_CPU_POWER),
                        mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_WIFI_POWER),
                        mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_LED_POWER),
                        mCFileStream.ParsingPowerConsumption(mSearchUid, GPS_POWER),
                        mCFileStream.ParsingPowerConsumption(mSearchUid, AUDIO_POWER),
                        mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_THREEG_POWER));
            } else {
                //? ?  arraylist?  .
                mCpuPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_CPU_POWER);
                mWifiPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_WIFI_POWER);
                mLedPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_LED_POWER);
                mThreeGPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_THREEG_POWER);
                mGpsPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, GPS_POWER);
                mAudioPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, AUDIO_POWER);

                // ?  UID? Power? ? ?   ArrayList  .
                processUidDeletePower();
                //CPU,WIFI,LED,GPS,AUDIO,3G  .
                StackedXYAreaRenderer(mCpuPowerArrayList, mWifiPowerArrayList, mLedPowerArrayList,
                        mGpsPowerArrayList, mAudioPowerArrayList, mThreeGPowerArrayList);
            }
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    } else if (e.getSource() == mBatteryCapacityBtn) {
        try {
            mBatteryCapacityArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, BATTERY_CAPACITY);
            LineGraphGenerate(mBatteryCapacityArrayList, "Line Graph", "Battery Capacity",
                    "Battery Capacity (%)");
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    } else if (e.getSource() == mCpuBtn) {
        try {
            mCpuPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, CPU_POWER);
            LineGraphGenerate(mCpuPowerArrayList, "Line Graph", "CPU Power Consumption", "CPU Power Value");
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    } else if (e.getSource() == mWifiBtn) {
        try {
            mWifiPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, WIFI_POWER);
            LineGraphGenerate(mWifiPowerArrayList, "Line Graph", "WIFI Power Consumption", "WIFI Power Value");
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    } else if (e.getSource() == m3GBtn) {
        try {
            mThreeGPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, THREEG_POWER);
            LineGraphGenerate(mThreeGPowerArrayList, "Line Graph", "ThreeG Power Consumption",
                    "ThreeG Power Value");
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }

    } else if (e.getSource() == mLedBtn) {
        try {
            mLedPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, LED_POWER);
            LineGraphGenerate(mLedPowerArrayList, "Line Graph", "LED Power Consumption", "LED Power Value");
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    } else if (e.getSource() == mGpsBtn) {
        try {
            mGpsPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, GPS_POWER);
            LineGraphGenerate(mGpsPowerArrayList, "Line Graph", "GPS Power Consumption", "GPS Power Value");
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    } else if (e.getSource() == mAudioBtn) {
        try {
            mAudioPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, AUDIO_POWER);
            LineGraphGenerate(mAudioPowerArrayList, "Line Graph", "AUDIO Power Consumption",
                    "Audio Power Value");
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
    //?  ?  . (UID ? .)
    else if (e.getSource() == mComponentWIFIBtn) {
        try {
            mComponentWifiArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_WIFI_POWER);
            LineGraphGenerate(mComponentWifiArrayList, "Line Graph", "ComponentWifi Power Consumption",
                    "ComponentWifi Power Value");
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
    // ? ?    ?.
    else if (e.getSource() == mDevicesPowerButton) {

        int maxCPU = 0;
        int maxWIFI = 0;
        int maxThree = 0;
        int maxLED = 0;
        int maxGPS = 0;
        int maxAUDIO = 0;

        try {
            maxCPU = maxEvaluation(mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_CPU_POWER));
            maxWIFI = maxEvaluation(mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_WIFI_POWER));
            maxThree = maxEvaluation(mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_THREEG_POWER));
            maxLED = maxEvaluation(mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_LED_POWER));
            maxGPS = maxEvaluation(mCFileStream.ParsingPowerConsumption(mSearchUid, GPS_POWER));
            maxAUDIO = maxEvaluation(mCFileStream.ParsingPowerConsumption(mSearchUid, AUDIO_POWER));

            System.out.println("CPU " + maxCPU);
            System.out.println("WIFI " + maxWIFI);
            System.out.println("3G " + maxThree);
            System.out.println("LED " + maxLED);
            System.out.println("GPS " + maxGPS);
            System.out.println("AUDIO " + maxAUDIO);
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    }
    //Component Pipe Diagram make function.
    else if (e.getSource() == mComponentPieBtn) {
        double[] value = new double[6];
        String[] group = new String[6];
        group[0] = "CPU Power";
        group[1] = "WIFI Power";
        group[2] = "LED Power";
        group[3] = "GPS Power";
        group[4] = "AUDIO Power";
        group[5] = "3G Power";
        value[0] = 0.0;
        value[1] = 0.0;
        value[2] = 0.0;
        value[3] = 0.0;
        value[4] = 0.0;
        value[5] = 0.0;

        int totalPowerValue = 0;
        if (mFirstRangeText.getText() != "") {
            //   .
            mFirstRange = Integer.parseInt(mFirstRangeText.getText());
            mSecondRange = Integer.parseInt(mSecondRangeText.getText());

            // ?  ?.
            try {
                mCpuPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_CPU_POWER);
                mWifiPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_WIFI_POWER);
                mLedPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_LED_POWER);
                mGpsPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, GPS_POWER);
                mAudioPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, AUDIO_POWER);
                mThreeGPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_THREEG_POWER);

                processUidDeletePower(); //  ? ? .

                for (int i = mFirstRange; i <= mSecondRange; i++) {
                    //  ? ?  .
                    value[0] += (double) mCpuPowerArrayList.get(i);
                    value[1] += (double) mWifiPowerArrayList.get(i);
                    value[2] += (double) mLedPowerArrayList.get(i);
                    value[5] += (double) mThreeGPowerArrayList.get(i);
                    if (FLAG_GPS_STATE == true && FLAG_AUDIO_STATE == true) {
                        value[3] += (double) mGpsPowerArrayList.get(i);
                        value[4] += (double) mAudioPowerArrayList.get(i);
                    } else if (FLAG_GPS_STATE == true && FLAG_AUDIO_STATE == false) {
                        value[3] += (double) mGpsPowerArrayList.get(i);
                        value[4] = 0.0;
                    } else if (FLAG_GPS_STATE == false && FLAG_AUDIO_STATE == true) {
                        value[3] = 0.0;
                        value[4] += (double) mAudioPowerArrayList.get(i);
                    }
                }

            } catch (FileNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

            PieGraphGenerate(group, value, "", "");
        }
    }
    // Pipe ?? ? ??  
    else if (e.getSource() == mUidPieDiagramBtn) {
        double[] value = new double[6];
        String[] group = new String[6];
        group[0] = "CPU Power";
        group[1] = "WIFI Power";
        group[2] = "LED Power";
        group[3] = "GPS Power";
        group[4] = "AUDIO Power";
        group[5] = "3G Power";
        value[0] = 0.0;
        value[1] = 0.0;
        value[2] = 0.0;
        value[3] = 0.0;
        value[4] = 0.0;
        value[5] = 0.0;

        int totalPowerValue = 0;
        if (mFirstRangeText.getText() != "") {
            //   .
            mFirstRange = Integer.parseInt(mFirstRangeText.getText());
            mSecondRange = Integer.parseInt(mSecondRangeText.getText());

            // ?  ?.
            try {
                mCpuPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, CPU_POWER);
                mWifiPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, WIFI_POWER);
                mLedPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, LED_POWER);
                mGpsPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, GPS_POWER);
                mAudioPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, AUDIO_POWER);
                mThreeGPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, THREEG_POWER);

                //  ? ??    ?.
                mTotalPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_POWER);

                for (int i = mFirstRange; i <= mSecondRange; i++) {
                    //  ? ?  .
                    value[0] += (double) mCpuPowerArrayList.get(i);
                    value[1] += (double) mWifiPowerArrayList.get(i);
                    value[2] += (double) mLedPowerArrayList.get(i);
                    value[5] += (double) mThreeGPowerArrayList.get(i);
                    if (FLAG_GPS_STATE == true && FLAG_AUDIO_STATE == true) {
                        value[3] += (double) mGpsPowerArrayList.get(i);
                        value[4] += (double) mAudioPowerArrayList.get(i);
                    } else if (FLAG_GPS_STATE == true && FLAG_AUDIO_STATE == false) {
                        value[3] += (double) mGpsPowerArrayList.get(i);
                        value[4] = 0.0;
                    } else if (FLAG_GPS_STATE == false && FLAG_AUDIO_STATE == true) {
                        value[3] = 0.0;
                        value[4] += (double) mAudioPowerArrayList.get(i);
                    }
                    totalPowerValue += mTotalPowerArrayList.get(i);
                }
                System.out.println(totalPowerValue);
            } catch (FileNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

            PieGraphGenerate(group, value, "", "");
        }
    }
    //Component  .
    else if (e.getSource() == mComponentLEDBtn) {

    }
    // 3D bar chart Range? ??  .
    else if (e.getSource() == m3DBarChartMean) {
        int unit = 0;
        int sumCPU = 0;
        int sumWIFI = 0;
        int sumLED = 0;
        int sumGPS = 0;
        int sumAUDIO = 0;
        int sumThree = 0;
        int totalsum = 0;
        int powtotalsum = 0;
        int LastUnit = 0;
        double mean;
        double totalmean;
        double Powe2mean;
        boolean flagGPS = false;
        boolean flagAUDIO = false;

        // ? ? ? .
        flagGPS = mGPSCheckBox.isSelected();
        flagAUDIO = mAudioCheckBox.isSelected();

        ArrayList<Double> mTotalArrayList = new ArrayList<Double>();
        ArrayList<Double> mUnitCPUArrayList = new ArrayList<Double>();
        ArrayList<Double> mUnitWIFIPowerArrayList = new ArrayList<Double>();
        ArrayList<Double> mUnitThreePowerArrayList = new ArrayList<Double>();
        ArrayList<Double> mUnitLEDPowerArrayList = new ArrayList<Double>();
        ArrayList<Double> mUnitGPSPowerArrayList = new ArrayList<Double>();
        ArrayList<Double> mUnitAUDIOPowerArrayList = new ArrayList<Double>();

        if (mChartMeanUnitTextField.getText() != "") {
            unit = Integer.parseInt(mChartMeanUnitTextField.getText());
            //  ??  ?   ?? ? ?. (e.g 1 ?? ?? 40
            // ? ? ? ?.
            // ? ??  ?      ?   .
            LastUnit = Integer.parseInt(mChartMeanUnitTextField.getText());
        }
        // ? Power ? .
        try {

            mCpuPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_CPU_POWER);
            mWifiPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_WIFI_POWER);
            mThreeGPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_THREEG_POWER);
            mLedPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, TOTAL_LED_POWER);
            mGpsPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, GPS_POWER);
            mAudioPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, AUDIO_POWER);

        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        // list   .
        processUidDeletePower();

        // unit ? ??  .
        for (int i = 0; i < mCpuPowerArrayList.size(); i += unit) {
            sumCPU = 0;
            sumWIFI = 0;
            sumThree = 0;
            sumLED = 0;
            sumGPS = 0;
            sumAUDIO = 0;

            totalsum = 0;
            powtotalsum = 0;

            for (int j = 0; j < unit; j++) {
                if ((j + i) >= mCpuPowerArrayList.size()) {
                    // ?   . ?  ??  ?.
                    LastUnit = j; // ?  ?  .
                    break;
                }
                sumCPU += mCpuPowerArrayList.get(j + i);
                sumWIFI += mWifiPowerArrayList.get(j + i);
                sumThree += mThreeGPowerArrayList.get(j + i);
                sumLED += mLedPowerArrayList.get(j + i);

                // ? ? ? .
                if (flagGPS == true && flagAUDIO == true) {
                    sumGPS += mGpsPowerArrayList.get(j + i);
                    sumAUDIO += mAudioPowerArrayList.get(j + i);

                    totalsum = mCpuPowerArrayList.get(j + i) + mWifiPowerArrayList.get(j + i)
                            + mThreeGPowerArrayList.get(j + i) + mLedPowerArrayList.get(j + i)
                            + mGpsPowerArrayList.get(j + i) + mAudioPowerArrayList.get(j + i);

                } else if (flagGPS == true && flagAUDIO == false) {
                    sumGPS += mGpsPowerArrayList.get(j + i);

                    totalsum = mCpuPowerArrayList.get(j + i) + mWifiPowerArrayList.get(j + i)
                            + mThreeGPowerArrayList.get(j + i) + mLedPowerArrayList.get(j + i)
                            + mGpsPowerArrayList.get(j + i);
                } else if (flagGPS == false && flagAUDIO == true) {
                    sumAUDIO += mAudioPowerArrayList.get(j + i);

                    totalsum = mCpuPowerArrayList.get(j + i) + mWifiPowerArrayList.get(j + i)
                            + mThreeGPowerArrayList.get(j + i) + mLedPowerArrayList.get(j + i)
                            + mAudioPowerArrayList.get(j + i);
                } else {
                    totalsum = mCpuPowerArrayList.get(j + i) + mWifiPowerArrayList.get(j + i)
                            + mThreeGPowerArrayList.get(j + i) + mLedPowerArrayList.get(j + i);
                }
                powtotalsum += (int) Math.pow(totalsum, 2);
                totalsum = 0;

            }

            /*
             * LastUnit? break?   ? ?    ? . ? ??
             * ? ? ? ?  ? .
             */
            mean = sumCPU / LastUnit;
            mUnitCPUArrayList.add(mean);
            mean = sumWIFI / LastUnit;
            mUnitWIFIPowerArrayList.add(mean);
            mean = sumThree / LastUnit;
            mUnitThreePowerArrayList.add(mean);
            mean = sumLED / LastUnit;
            mUnitLEDPowerArrayList.add(mean);

            if ((flagGPS == true) && (flagAUDIO == true)) {
                mean = sumGPS / LastUnit;
                mUnitGPSPowerArrayList.add(mean);
                mean = sumAUDIO / LastUnit;
                mUnitAUDIOPowerArrayList.add(mean);

                totalmean = (sumCPU + sumWIFI + sumThree + sumLED + sumGPS + sumAUDIO) / LastUnit;
                //  .
                Powe2mean = Math.sqrt((powtotalsum / LastUnit)
                        - Math.pow(((sumCPU + sumWIFI + sumThree + sumLED + sumGPS + sumAUDIO) / LastUnit), 2));
                // ?   .
                /*               System.out.println((i / 60) + ": ?: " + totalmean
                                     + " : " + Powe2mean);*/
                System.out.println("" + totalmean);
            } else if ((flagGPS == true) && (flagAUDIO == false)) {
                mean = sumGPS / LastUnit;
                mUnitGPSPowerArrayList.add(mean);
                mUnitAUDIOPowerArrayList.add(0.0);

                totalmean = (sumCPU + sumWIFI + sumLED + sumGPS) / LastUnit;
                //  .
                Powe2mean = Math.sqrt((powtotalsum / LastUnit)
                        - Math.pow(((sumCPU + sumWIFI + sumThree + sumLED + sumGPS) / LastUnit), 2));
                /*System.out.println((i / 60) + ": ?: " + totalmean
                      + " : " + Powe2mean);*/
                System.out.println("" + totalmean);
            } else if (flagGPS == false && flagAUDIO == true) {
                mUnitGPSPowerArrayList.add(0.0);
                mean = sumAUDIO / LastUnit;
                mUnitAUDIOPowerArrayList.add(mean);

                totalmean = (sumCPU + sumWIFI + sumLED + sumAUDIO) / LastUnit;
                //  .
                Powe2mean = Math.sqrt((powtotalsum / LastUnit)
                        - Math.pow(((sumCPU + sumWIFI + sumThree + sumLED + sumAUDIO) / LastUnit), 2));
                /*System.out.println((i / 60) + ": ?: " + totalmean
                      + " : " + Powe2mean);*/
                System.out.println("" + totalmean);
            } else {
                mUnitGPSPowerArrayList.add(0.0);
                mUnitAUDIOPowerArrayList.add(0.0);

                totalmean = (sumCPU + sumWIFI + sumLED) / LastUnit;
                //  .
                Powe2mean = Math.sqrt((powtotalsum / LastUnit)
                        - Math.pow(((sumCPU + sumWIFI + sumThree + sumLED) / LastUnit), 2));
                /*System.out.println((i / 60) + ": ?: " + totalmean
                      + " : " + Powe2mean);*/
                System.out.println("" + totalmean);
            }

        }

        for (int i = 0; i < mUnitCPUArrayList.size(); i++) {
            double sum = mUnitCPUArrayList.get(i) + mUnitWIFIPowerArrayList.get(i)
                    + mUnitThreePowerArrayList.get(i) + mUnitLEDPowerArrayList.get(i)
                    + mUnitGPSPowerArrayList.get(i) + mUnitAUDIOPowerArrayList.get(i);
            System.out.println("" + sum);
        }
        // 3D bar chart ? .
        StackedBarChart3D(mUnitCPUArrayList, mUnitWIFIPowerArrayList, mUnitThreePowerArrayList,
                mUnitLEDPowerArrayList, mUnitGPSPowerArrayList, mUnitAUDIOPowerArrayList);

    }
    // ? App Line  ?.
    else if (e.getSource() == mAppTotalPowerBtn) {
        int totalPower;
        ArrayList<Integer> mUidTotalPowerArrayList = new ArrayList<Integer>();
        try {

            mCpuPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, CPU_POWER);
            mWifiPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, WIFI_POWER);
            mLedPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, LED_POWER);
            mGpsPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, GPS_POWER);
            mAudioPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, AUDIO_POWER);

            /* log ?  */
            mLogScaleTextFiled.setText(String.format("%d", mCpuPowerArrayList.size() - 1));

        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        // uid  ? Line Grahp .
        for (int i = 0; i < mCpuPowerArrayList.size(); i++) {
            totalPower = mCpuPowerArrayList.get(i) + mWifiPowerArrayList.get(i) + mLedPowerArrayList.get(i);
            if (FLAG_GPS_STATE == true && FLAG_AUDIO_STATE == true) {
                totalPower += mGpsPowerArrayList.get(i) + mAudioPowerArrayList.get(i);
            } else if (FLAG_GPS_STATE == true && FLAG_AUDIO_STATE == false) {
                totalPower += mGpsPowerArrayList.get(i);
            } else if (FLAG_GPS_STATE == false && FLAG_AUDIO_STATE == true) {
                totalPower += mAudioPowerArrayList.get(i);
            }
            mUidTotalPowerArrayList.add(totalPower);
        }
        LineGraphGenerate(mUidTotalPowerArrayList, "Line Graph", "App Total Power", "Power Value");
    }
    // ? App XY Area ?.
    else if (e.getSource() == mAppStackedPower) {
        try {
            mCpuPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, CPU_POWER);
            mWifiPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, WIFI_POWER);
            mLedPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, LED_POWER);
            mGpsPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, GPS_POWER);
            mAudioPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, AUDIO_POWER);
            mThreeGPowerArrayList = mCFileStream.ParsingPowerConsumption(mSearchUid, THREEG_POWER);
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        StackedXYAreaRenderer(mCpuPowerArrayList, mWifiPowerArrayList, mLedPowerArrayList, mGpsPowerArrayList,
                mAudioPowerArrayList, mThreeGPowerArrayList);
    }
    // List? ???  
    else if (e.getSource() == mDeleteUidMoveBtn) {
        listModelUidDelte.addElement(mSearchUid); //? UID  UID List ?? .
    }
    // List?  UID 
    else if (e.getSource() == mDeleteAllBtn) {
        listModelUidDelte.clear();
    }
    // List? ? UID 
    else if (e.getSource() == mDeleteOneBtn) {
        listModelUidDelte.remove(mDeleteList.getSelectedIndex());

    }
    //?   ?  ?.
    else if (e.getSource() == mTotalCompareBtn) {
        DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
        DefaultStatisticalCategoryDataset defaultstatisticalcategorydataset = new DefaultStatisticalCategoryDataset();

        //? (?) sd 157.97
        defaultcategorydataset.addValue(167, "CPU Power(mW)", "MYPEOPLE-Voice");
        defaultcategorydataset.addValue(400, "WIFI Power(mW)", "MYPEOPLE-Voice");
        defaultcategorydataset.addValue(0, "3G Power(mW)", "MYPEOPLE-Voice");
        defaultcategorydataset.addValue(0, "LED Power(mW)", "MYPEOPLE-Voice");
        defaultcategorydataset.addValue(0, "GPS Power(mW)", "MYPEOPLE-Voice");
        defaultcategorydataset.addValue(0, "AUDIO Power(mW)", "MYPEOPLE-Voice");
        //?(??) sd 144.44
        defaultcategorydataset.addValue(197, "CPU Power(mW)", "MYPEOPLE-Video");
        defaultcategorydataset.addValue(404, "WIFI Power(mW)", "MYPEOPLE-Video");
        defaultcategorydataset.addValue(0, "3G Power(mW)", "MYPEOPLE-Video");
        defaultcategorydataset.addValue(399, "LED Power(mW)", "MYPEOPLE-Video");
        defaultcategorydataset.addValue(0, "GPS Power(mW)", "MYPEOPLE-Video");
        defaultcategorydataset.addValue(0, "AUDIO Power(mW)", "MYPEOPLE-Video");
        // sd : 246.80
        defaultcategorydataset.addValue(91, "CPU Power(mW)", "KAKAo-Talk");
        defaultcategorydataset.addValue(110, "WIFI Power(mW)", "KAKAo-Talk");
        defaultcategorydataset.addValue(0, "3G Power(mW)", "KAKAo-Talk");
        defaultcategorydataset.addValue(454, "LED Power(mW)", "KAKAo-Talk");
        defaultcategorydataset.addValue(0, "GPS Power(mW)", "KAKAo-Talk");
        defaultcategorydataset.addValue(0, "AUDIO Power(mW)", "KAKAo-Talk");
        // sd : 188.30
        defaultcategorydataset.addValue(134, "CPU Power(mW)", "Angry-Birds");
        defaultcategorydataset.addValue(66, "WIFI Power(mW)", "Angry-Birds");
        defaultcategorydataset.addValue(0, "3G Power(mW)", "Angry-Birds");
        defaultcategorydataset.addValue(528, "LED Power(mW)", "Angry-Birds");
        defaultcategorydataset.addValue(0, "GPS Power(mW)", "Angry-Birds");
        defaultcategorydataset.addValue(103, "AUDIO Power(mW)", "Angry-Birds");
        // sd : 233.50
        defaultcategorydataset.addValue(40, "CPU Power(mW)", "Youtube");
        defaultcategorydataset.addValue(131, "WIFI Power(mW)", "Youtube");
        defaultcategorydataset.addValue(0, "3G Power(mW)", "Youtube");
        defaultcategorydataset.addValue(474, "LED Power(mW)", "Youtube");
        defaultcategorydataset.addValue(0, "GPS Power(mW)", "Youtube");
        defaultcategorydataset.addValue(91, "AUDIO Power(mW)", "Youtube");
        //?  sd : 301.80
        defaultcategorydataset.addValue(382, "CPU Power(mW)", "Web-Browser");
        defaultcategorydataset.addValue(0, "WIFI Power(mW)", "Web-Browser");
        defaultcategorydataset.addValue(823, "3G Power(mW)", "Web-Browser");
        defaultcategorydataset.addValue(570, "LED Power(mW)", "Web-Browser");
        defaultcategorydataset.addValue(0, "GPS Power(mW)", "Web-Browser");
        defaultcategorydataset.addValue(0, "AUDIO Power(mW)", "Web-Browser");

        defaultcategorydataset.addValue(60, "CPU Power(mW)", "Google-Map");
        defaultcategorydataset.addValue(0, "WIFI Power(mW)", "Google-Map");
        defaultcategorydataset.addValue(750, "3G Power(mW)", "Google-Map");
        defaultcategorydataset.addValue(538, "LED Power(mW)", "Google-Map");
        defaultcategorydataset.addValue(244, "GPS Power(mW)", "Google-Map");
        defaultcategorydataset.addValue(0, "AUDIO Power(mW)", "Google-Map");

        JFreeChart jfreechart = ChartFactory.createStackedBarChart3D("", "Application Name", "Power(mW)",
                defaultcategorydataset, PlotOrientation.HORIZONTAL, true, true, false);

        CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
        categoryplot.setBackgroundPaint(new Color(255, 255, 255));// 
        // ?  ?.
        // IntervalMarker intervalmarker = new IntervalMarker(5D, 10D,
        // Color.gray, new BasicStroke(0.5F), Color.blue, new BasicStroke(0.5F),
        // 0.5F);
        // categoryplot.addRangeMarker(intervalmarker);

        BarRenderer barrenderer = (BarRenderer) categoryplot.getRenderer();
        barrenderer.setDrawBarOutline(false);
        barrenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
        barrenderer.setBaseItemLabelsVisible(true);
        barrenderer.setBasePositiveItemLabelPosition(
                new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
        barrenderer.setBaseNegativeItemLabelPosition(
                new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));

        // JFrame?  ?.
        ChartPanel chartPanel = new ChartPanel(jfreechart);
        JFrame f = new JFrame("");
        f.setSize(600, 600);
        f.getContentPane().add(chartPanel);

        // f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);

    }
    // ? ? ?   . 
    else if (e.getSource() == mCompareAppPowerBtn) {
        DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
        DefaultStatisticalCategoryDataset defaultstatisticalcategorydataset = new DefaultStatisticalCategoryDataset();

        //? (?) sd 38.6
        defaultcategorydataset.addValue(313, "CPU Power(mW)", "MYPEOPLE-Voice");
        defaultcategorydataset.addValue(404, "WIFI Power(mW)", "MYPEOPLE-Voice");
        defaultcategorydataset.addValue(0, "3G Power(mW)", "MYPEOPLE-Voice");
        defaultcategorydataset.addValue(0, "LED Power(mW)", "MYPEOPLE-Voice");
        defaultcategorydataset.addValue(0, "GPS Power(mW)", "MYPEOPLE-Voice");
        defaultcategorydataset.addValue(0, "AUDIO Power(mW)", "MYPEOPLE-Voice");
        //?(??) sd 144.44
        defaultcategorydataset.addValue(277, "CPU Power(mW)", "MYPEOPLE-Video");
        defaultcategorydataset.addValue(396, "WIFI Power(mW)", "MYPEOPLE-Video");
        defaultcategorydataset.addValue(0, "3G Power(mW)", "MYPEOPLE-Video");
        defaultcategorydataset.addValue(411, "LED Power(mW)", "MYPEOPLE-Video");
        defaultcategorydataset.addValue(0, "GPS Power(mW)", "MYPEOPLE-Video");
        defaultcategorydataset.addValue(0, "AUDIO Power(mW)", "MYPEOPLE-Video");

        defaultcategorydataset.addValue(93, "CPU Power(mW)", "KAKAo-Talk");
        defaultcategorydataset.addValue(166, "WIFI Power(mW)", "KAKAo-Talk");
        defaultcategorydataset.addValue(0, "3G Power(mW)", "KAKAo-Talk");
        defaultcategorydataset.addValue(465, "LED Power(mW)", "KAKAo-Talk");
        defaultcategorydataset.addValue(0, "GPS Power(mW)", "KAKAo-Talk");
        defaultcategorydataset.addValue(0, "AUDIO Power(mW)", "KAKAo-Talk");

        defaultcategorydataset.addValue(149, "CPU Power(mW)", "Angry-Birds");
        defaultcategorydataset.addValue(88, "WIFI Power(mW)", "Angry-Birds");
        defaultcategorydataset.addValue(0, "3G Power(mW)", "Angry-Birds");
        defaultcategorydataset.addValue(534, "LED Power(mW)", "Angry-Birds");
        defaultcategorydataset.addValue(0, "GPS Power(mW)", "Angry-Birds");
        defaultcategorydataset.addValue(106, "AUDIO Power(mW)", "Angry-Birds");

        defaultcategorydataset.addValue(32, "CPU Power(mW)", "Youtube");
        defaultcategorydataset.addValue(136, "WIFI Power(mW)", "Youtube");
        defaultcategorydataset.addValue(0, "3G Power(mW)", "Youtube");
        defaultcategorydataset.addValue(520, "LED Power(mW)", "Youtube");
        defaultcategorydataset.addValue(0, "GPS Power(mW)", "Youtube");
        defaultcategorydataset.addValue(103, "AUDIO Power(mW)", "Youtube");

        defaultcategorydataset.addValue(411, "CPU Power(mW)", "Web-Browser");
        defaultcategorydataset.addValue(0, "WIFI Power(mW)", "Web-Browser");
        defaultcategorydataset.addValue(883, "3G Power(mW)", "Web-Browser");
        defaultcategorydataset.addValue(626, "LED Power(mW)", "Web-Browser");
        defaultcategorydataset.addValue(0, "GPS Power(mW)", "Web-Browser");
        defaultcategorydataset.addValue(0, "AUDIO Power(mW)", "Web-Browser");

        defaultcategorydataset.addValue(94, "CPU Power(mW)", "Google-Map");
        defaultcategorydataset.addValue(0, "WIFI Power(mW)", "Google-Map");
        defaultcategorydataset.addValue(902, "3G Power(mW)", "Google-Map");
        defaultcategorydataset.addValue(581, "LED Power(mW)", "Google-Map");
        defaultcategorydataset.addValue(268, "GPS Power(mW)", "Google-Map");
        defaultcategorydataset.addValue(0, "AUDIO Power(mW)", "Google-Map");

        JFreeChart jfreechart = ChartFactory.createStackedBarChart3D("", "Application Name", "Power(mW)",
                defaultcategorydataset, PlotOrientation.HORIZONTAL, true, true, false);

        CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
        categoryplot.setBackgroundPaint(new Color(255, 255, 255));// 
        // ?  ?.
        // IntervalMarker intervalmarker = new IntervalMarker(5D, 10D,
        // Color.gray, new BasicStroke(0.5F), Color.blue, new BasicStroke(0.5F),
        // 0.5F);
        // categoryplot.addRangeMarker(intervalmarker);

        BarRenderer barrenderer = (BarRenderer) categoryplot.getRenderer();
        barrenderer.setDrawBarOutline(false);
        barrenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
        barrenderer.setBaseItemLabelsVisible(true);
        barrenderer.setBasePositiveItemLabelPosition(
                new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
        barrenderer.setBaseNegativeItemLabelPosition(
                new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));

        // JFrame?  ?.
        ChartPanel chartPanel = new ChartPanel(jfreechart);
        JFrame f = new JFrame("");
        f.setSize(600, 600);
        f.getContentPane().add(chartPanel);

        // f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);

    }
}

From source file:cnu.eslab.fileTest.NewJFrame.java

public void StackedBarChart3D(ArrayList<Double> arCpuArrayList, ArrayList<Double> arWifiArrayList,
        ArrayList<Double> arThreeArrayList, ArrayList<Double> arLedArrayList, ArrayList<Double> arGpsArrayList,
        ArrayList<Double> arAudioArrayList) {

    DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();

    for (int i = 0; i < arCpuArrayList.size(); i++) {
        defaultcategorydataset.addValue(arCpuArrayList.get(i), "CPU Power(mW)", i + "");
        defaultcategorydataset.addValue(arWifiArrayList.get(i), "WIFI Power(mW)", i + "");
        defaultcategorydataset.addValue(arThreeArrayList.get(i), "3G Power(mW)", i + "");
        defaultcategorydataset.addValue(arLedArrayList.get(i), "LED Power(mW)", i + "");
        defaultcategorydataset.addValue(arGpsArrayList.get(i), "GPS Power(mW)", i + "");
        defaultcategorydataset.addValue(arAudioArrayList.get(i), "AUDIO Power(mW)", i + "");
    }/*www.j  a va2s. c  o  m*/

    JFreeChart jfreechart = ChartFactory.createStackedBarChart3D("Stacked Bar Chart", "Time", "Power(mW)",
            defaultcategorydataset, PlotOrientation.VERTICAL, true, true, false);

    CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
    // ?  ?.
    // IntervalMarker intervalmarker = new IntervalMarker(5D, 10D,
    // Color.gray, new BasicStroke(0.5F), Color.blue, new BasicStroke(0.5F),
    // 0.5F);
    // categoryplot.addRangeMarker(intervalmarker);

    BarRenderer barrenderer = (BarRenderer) categoryplot.getRenderer();
    barrenderer.setDrawBarOutline(false);
    barrenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    barrenderer.setBaseItemLabelsVisible(true);
    barrenderer
            .setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
    barrenderer
            .setBaseNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));

    // JFrame?  ?.
    ChartPanel chartPanel = new ChartPanel(jfreechart);
    JFrame f = new JFrame("StackedXYAreaRenderer");
    f.setSize(600, 600);
    f.getContentPane().add(chartPanel);

    // f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
}

From source file:com.naryx.tagfusion.cfm.tag.awt.cfCHART.java

private CategoryPlot getCategoryPlot(List<cfCHARTSERIESData> series, String xAxisTitle, String yAxisTitle,
        String labelFormat, boolean bShowMarkers, int markerSize, boolean bShow3D, String tipStyle,
        String drillDownUrl, int xOffset, int yOffset, int yAxisUnits, String seriesPlacement,
        boolean bSortXAxis, int height, String[] yAxisSymbols, int gridLines) throws cfmRunTimeException {
    // Create a category plot
    CategoryPlot plot = new CategoryPlot();

    // Set the domain axis (the x-axis)
    org.jfree.chart.axis.CategoryAxis categoryAxis;
    if (bShow3D)/*from w  w  w  . j av  a 2s . co  m*/
        categoryAxis = new CategoryAxis3D(xAxisTitle);
    else
        categoryAxis = new CategoryAxis(xAxisTitle);
    plot.setDomainAxis(categoryAxis);

    // Set the range axis (the y-axis)
    ValueAxis valueAxis;
    DateFormat dateFormat = null;
    NumberFormat numberFormat = null;

    // Ignore a label format of date if the y-axis is using symbols
    if (labelFormat.equals("date") && (yAxisSymbols == null)) {
        valueAxis = new DateAxis(yAxisTitle);
        dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
        ((DateAxis) valueAxis).setDateFormatOverride(dateFormat);
    } else {
        if (yAxisSymbols != null) {
            valueAxis = new SymbolAxis(yAxisTitle, yAxisSymbols);
            ((SymbolAxis) valueAxis).setGridBandsVisible(false);
            ((SymbolAxis) valueAxis).setAutoRangeStickyZero(true);
        } else if (bShow3D) {
            valueAxis = new NumberAxis3D(yAxisTitle);
        } else {
            valueAxis = new NumberAxis(yAxisTitle);
        }

        if (labelFormat.equals("currency")) {
            ((NumberAxis) valueAxis).setNumberFormatOverride(NumberFormat.getCurrencyInstance());
            numberFormat = NumberFormat.getCurrencyInstance();
        } else if (labelFormat.equals("percent")) {
            numberFormat = NumberFormat.getPercentInstance();
            numberFormat.setMaximumFractionDigits(3); // without this change .11443
                                                      // would be displayed as 11%
                                                      // instead of 11.443%
            ((NumberAxis) valueAxis).setNumberFormatOverride(numberFormat);
        } else {
            numberFormat = NumberFormat.getInstance();
        }

        if (yAxisUnits != 0)
            ((NumberAxis) valueAxis).setTickUnit(new NumberTickUnit(yAxisUnits));
    }
    plot.setRangeAxis(valueAxis);

    // Add a dataset and renderer for each series
    int barChartDatasetIndex = -1;
    int hBarChartDatasetIndex = -1;
    int num = 0;
    MinMaxData minMax = new MinMaxData();
    for (int i = 0; i < series.size(); i++) {
        cfCHARTSERIESData seriesData = series.get(i);

        // If the sortXAxis attribute was set to "yes" then sort the data.
        // NOTE: this attribute is only used with category charts.
        if (bSortXAxis)
            seriesData.sort();

        DefaultCategoryDataset dataset;
        if ((barChartDatasetIndex != -1) && (seriesData.getType().equals("bar"))) {
            dataset = (DefaultCategoryDataset) plot.getDataset(barChartDatasetIndex);

            addSeriesDataToDataset(seriesData, dataset, minMax);

            // Set the paint style for this series
            setPaintStyle(seriesData.getPaintStyle(), plot.getRenderer(barChartDatasetIndex),
                    dataset.getRowCount() - 1, height);

            // Add the color list for this series to the custom color renderer
            CustomColorRenderer cr = (CustomColorRenderer) plot.getRenderer(barChartDatasetIndex);
            cr.addColors(getColorList(seriesData));

            continue;
        } else if ((hBarChartDatasetIndex != -1) && (seriesData.getType().equals("horizontalbar"))) {
            dataset = (DefaultCategoryDataset) plot.getDataset(hBarChartDatasetIndex);

            addSeriesDataToDataset(seriesData, dataset, minMax);

            // Set the paint style for this series
            setPaintStyle(seriesData.getPaintStyle(), plot.getRenderer(hBarChartDatasetIndex),
                    dataset.getRowCount() - 1, height);

            // Add the color list for this series to the custom color renderer
            CustomColorRenderer cr = (CustomColorRenderer) plot.getRenderer(hBarChartDatasetIndex);
            cr.addColors(getColorList(seriesData));

            continue;
        } else {
            dataset = new DefaultCategoryDataset();

            addSeriesDataToDataset(seriesData, dataset, minMax);
        }

        plot.setDataset(num, dataset);

        AbstractCategoryItemRenderer renderer = null;
        if (seriesData.getType().equals("bar")) {
            plot.setOrientation(PlotOrientation.VERTICAL);
            renderer = getBarRenderer(seriesPlacement, bShow3D, xOffset, yOffset, getColorList(seriesData));
            ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
                    TextAnchor.BOTTOM_CENTER);
            renderer.setPositiveItemLabelPosition(position1);
            ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6,
                    TextAnchor.TOP_CENTER);
            renderer.setNegativeItemLabelPosition(position2);
            ((BarRenderer) renderer).setItemMargin(0.0); // The margin between items
                                                         // in the same category
            categoryAxis.setCategoryMargin(0.2); // The margin between each category

            barChartDatasetIndex = num;
        } else if (seriesData.getType().equals("horizontalbar")) {
            plot.setOrientation(PlotOrientation.HORIZONTAL);
            plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
            renderer = getBarRenderer(seriesPlacement, bShow3D, xOffset, yOffset, getColorList(seriesData));
            if (bShow3D) {
                // change rendering order to ensure that bar overlapping is the
                // right way around
                plot.setRowRenderingOrder(org.jfree.util.SortOrder.DESCENDING);
                plot.setColumnRenderingOrder(org.jfree.util.SortOrder.DESCENDING);
            }
            ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3,
                    TextAnchor.CENTER_LEFT);
            renderer.setPositiveItemLabelPosition(position1);
            ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9,
                    TextAnchor.CENTER_RIGHT);
            renderer.setNegativeItemLabelPosition(position2);
            ((BarRenderer) renderer).setItemMargin(0.0); // The margin between items
                                                         // in the same category
            categoryAxis.setCategoryMargin(0.2); // The margin between each category

            hBarChartDatasetIndex = num;
        } else if (seriesData.getType().equals("line")) {
            if (bShow3D) {
                renderer = new LineRenderer3D();
                ((LineRenderer3D) renderer).setXOffset(xOffset);
                ((LineRenderer3D) renderer).setYOffset(yOffset);
            } else {
                renderer = new LineAndShapeRenderer(true, false);
            }

            // Enable/Disable displaying of markers
            ((LineAndShapeRenderer) renderer).setShapesVisible(bShowMarkers);

            // Set the shape of the markers based on the markerSize value
            ((LineAndShapeRenderer) renderer).setShape(getMarker(seriesData.getMarkerStyle(), markerSize));
        } else if (seriesData.getType().equals("area")) {
            if (seriesPlacement.equals("stacked"))
                renderer = new StackedAreaRenderer(); // this doesn't work for some
                                                      // reason
            else
                renderer = new AreaRenderer();

            // Truncate the first and last values to match CFMX 7
            ((AreaRenderer) renderer).setEndType(AreaRendererEndType.TRUNCATE);

            categoryAxis.setCategoryMargin(0.0);
        } else if (seriesData.getType().equals("step")) {
            renderer = new CategoryStepRenderer(true);
        } else if (seriesData.getType().equals("scatter")) {
            renderer = new LineAndShapeRenderer(false, true);

            // Set the shape of the markers based on the markerSize value
            ((LineAndShapeRenderer) renderer).setShape(getMarker(seriesData.getMarkerStyle(), markerSize));
        }

        if (!tipStyle.equals("none")) {
            if (dateFormat != null)
                renderer.setBaseToolTipGenerator(
                        new StandardCategoryToolTipGenerator("({0}, {1}) = {2}", dateFormat));
            else
                renderer.setBaseToolTipGenerator(
                        new StandardCategoryToolTipGenerator("({0}, {1}) = {2}", numberFormat));
        }

        if (drillDownUrl != null) {
            if (dateFormat != null)
                renderer.setBaseItemURLGenerator(
                        new com.newatlanta.bluedragon.CategoryURLGenerator(drillDownUrl, dateFormat));
            else
                renderer.setBaseItemURLGenerator(
                        new com.newatlanta.bluedragon.CategoryURLGenerator(drillDownUrl, numberFormat));
        }

        if (seriesData.getSeriesColor() != null)
            renderer.setSeriesPaint(0, convertStringToColor(seriesData.getSeriesColor()));

        String dataLabelStyle = seriesData.getDataLabelStyle();
        if (labelFormat.equals("date")) {
            if (dataLabelStyle.equals("none")) {
                renderer.setItemLabelsVisible(false);
            } else {
                setCategoryItemLabelsData(renderer, seriesData);
                if (dataLabelStyle.equals("value"))
                    renderer.setItemLabelGenerator(
                            new CategoryItemLabelGenerator("{2}", dateFormat, yAxisSymbols));
                else if (dataLabelStyle.equals("rowlabel"))
                    renderer.setItemLabelGenerator(
                            new CategoryItemLabelGenerator("{0}", dateFormat, yAxisSymbols));
                else if (dataLabelStyle.equals("columnlabel"))
                    renderer.setItemLabelGenerator(
                            new CategoryItemLabelGenerator("{1}", dateFormat, yAxisSymbols));
                else if (dataLabelStyle.equals("pattern"))
                    renderer.setItemLabelGenerator(
                            new CategoryItemLabelGenerator("{1} {2}", dateFormat, yAxisSymbols));
                else
                    renderer.setItemLabelGenerator(
                            new CategoryItemLabelGenerator(dataLabelStyle, dateFormat, yAxisSymbols));
            }
        } else {
            if (dataLabelStyle.equals("none")) {
                renderer.setItemLabelsVisible(false);
            } else {
                setCategoryItemLabelsData(renderer, seriesData);
                if (dataLabelStyle.equals("value"))
                    renderer.setItemLabelGenerator(
                            new CategoryItemLabelGenerator("{2}", numberFormat, yAxisSymbols));
                else if (dataLabelStyle.equals("rowlabel"))
                    renderer.setItemLabelGenerator(
                            new CategoryItemLabelGenerator("{0}", numberFormat, yAxisSymbols));
                else if (dataLabelStyle.equals("columnlabel"))
                    renderer.setItemLabelGenerator(
                            new CategoryItemLabelGenerator("{1}", numberFormat, yAxisSymbols));
                else if (dataLabelStyle.equals("pattern"))
                    renderer.setItemLabelGenerator(
                            new CategoryItemLabelGenerator("{1} {2} ({3} of {4})", numberFormat, yAxisSymbols));
                else
                    renderer.setItemLabelGenerator(
                            new CategoryItemLabelGenerator(dataLabelStyle, numberFormat, yAxisSymbols));
            }
        }

        // Add the renderer to the plot.
        // NOTE: this must be done before the setPaintStyle() call so the
        // DrawingSupplier object
        // will be set up properly for the generation of default colors.
        plot.setRenderer(num, renderer);

        // Set the paint style for this series (series 0)
        if (seriesData.getType().equals("bar") || seriesData.getType().equals("horizontalbar")
                || seriesData.getType().equals("area"))
            setPaintStyle(seriesData.getPaintStyle(), renderer, 0, height);

        num++;
    }

    // If gridLines was specified then we need to calculate the yAxisUnits
    if ((gridLines != -1) && (valueAxis instanceof NumberAxis)) {
        // Calculate the yAxisUnits we need to use to create the number of
        // gridLines
        yAxisUnits = calculateYAxisUnits(gridLines, minMax);

        // Set the yAxisUnits
        ((NumberAxis) valueAxis).setTickUnit(new NumberTickUnit(yAxisUnits));
    }

    return plot;
}