Package synalp.generation.ranker.graphics

Source Code of synalp.generation.ranker.graphics.StackedBarChart

package synalp.generation.ranker.graphics;

import java.awt.Color;
import java.awt.GradientPaint;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.StackedBarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.ui.ApplicationFrame;


/**
* @author apoorvi
*
*/
public class StackedBarChart extends ApplicationFrame {
  /**
   *
   */
  private static final long serialVersionUID = 1L;

  /**
   * @param title
   * @param defaultPass
   * @param defaultFail
   * @param defaultTimeout
   * @param ngramPass
   * @param ngramFail
   * @param ngramTimeout
   */
  public StackedBarChart(String title, ArrayList<Integer> defaultPass,
      ArrayList<Integer> defaultFail, ArrayList<Integer> defaultTimeout,
      ArrayList<Integer> ngramPass, ArrayList<Integer> ngramFail,
      ArrayList<Integer> ngramTimeout) {
    super(title);
    try {
      ChartObject chartObject = new ChartObject(defaultPass.get(0),
          defaultFail.get(0), defaultTimeout.get(0), "Default");
      ChartObject chartObject1 = new ChartObject(ngramPass.get(0),
          ngramFail.get(0), ngramTimeout.get(0), "n=1");
      ChartObject chartObject2 = new ChartObject(ngramPass.get(1),
          ngramFail.get(1), ngramTimeout.get(1), "n=2");
      ChartObject chartObject3 = new ChartObject(ngramPass.get(2),
          ngramFail.get(2), ngramTimeout.get(2), "n=3");
      ChartObject chartObject4 = new ChartObject(ngramPass.get(3),
          ngramFail.get(3), ngramTimeout.get(3), "n=4");
      ChartObject chartObject5 = new ChartObject(ngramPass.get(4),
          ngramFail.get(4), ngramTimeout.get(4), "n=5");
      ChartObject chartObject6 = new ChartObject(ngramPass.get(5),
          ngramFail.get(5), ngramTimeout.get(5), "n=6");
      ChartObject chartObject7 = new ChartObject(ngramPass.get(6),
          ngramFail.get(6), ngramTimeout.get(6), "n=7");
      ChartObject chartObject8 = new ChartObject(ngramPass.get(7),
          ngramFail.get(7), ngramTimeout.get(7), "n=8");
      ChartObject chartObject9 = new ChartObject(ngramPass.get(8),
          ngramFail.get(8), ngramTimeout.get(8), "n=9");
      ChartObject chartObject10 = new ChartObject(ngramPass.get(9),
          ngramFail.get(9), ngramTimeout.get(9), "n=10");

      List<ChartObject> chartObjectList = new ArrayList<ChartObject>();
      chartObjectList.add(chartObject);
      chartObjectList.add(chartObject1);
      chartObjectList.add(chartObject2);
      chartObjectList.add(chartObject3);
      chartObjectList.add(chartObject4);
      chartObjectList.add(chartObject5);
      chartObjectList.add(chartObject6);
      chartObjectList.add(chartObject7);
      chartObjectList.add(chartObject8);
      chartObjectList.add(chartObject9);
      chartObjectList.add(chartObject10);

      final CategoryDataset dataset = createDataset(chartObjectList);
      final JFreeChart chart = createChart(dataset);
      final ChartPanel chartPanel = new ChartPanel(chart);
      chartPanel.setPreferredSize(new java.awt.Dimension(900, 800));
      setContentPane(chartPanel);

    } catch (Exception e) {
      e.printStackTrace();
      return;
    }
  }

  /**
   * @param chartObjectList
   * @return dataset mappings to be plotted
   */
  private CategoryDataset createDataset(List<ChartObject> chartObjectList) {
    int chartObjectListSize = chartObjectList.size();

    RowKey[] operations = new RowKey[3];
    operations[0] = new RowKey("PASS");
    operations[1] = new RowKey("FAIL");
    operations[2] = new RowKey("TIMEOUT");

    ColumnKey[] beamsizeArray = new ColumnKey[chartObjectListSize];
    double[] passes = new double[chartObjectListSize];
    double[] fails = new double[chartObjectListSize];
    double[] timeouts = new double[chartObjectListSize];

    for (int i = 0; i < chartObjectListSize; i++) {
      beamsizeArray[i] = new ColumnKey(chartObjectList.get(i)
          .getBeamsize());
      passes[i] = chartObjectList.get(i).getCountPass();
      fails[i] = chartObjectList.get(i).getCountFail();
      timeouts[i] = chartObjectList.get(i).getCountTimeout();
    }

    double[][] data = new double[][] { passes, fails, timeouts };

    return DatasetUtilities.createCategoryDataset(operations,
        beamsizeArray, data);
  }

  private JFreeChart createChart(final CategoryDataset dataset) {
    final JFreeChart chart = ChartFactory.createStackedBarChart(
        "Performance", "BeamSize", "", dataset,
        PlotOrientation.VERTICAL, true, true, false);
    chart.setBackgroundPaint(new Color(249, 231, 236));

    CategoryPlot plot = chart.getCategoryPlot();
   
    StackedBarRenderer renderer = new StackedBarRenderer(false);
    renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer.setBaseItemLabelsVisible(true);
    chart.getCategoryPlot().setRenderer(renderer);
   
    plot.getRenderer().setSeriesPaint(1, new GradientPaint(0.0f, 0.0f, new Color(0x22, 0x22, 0xFF), 0.0f, 0.0f, new Color(0x88, 0x88, 0xFF)));
    plot.getRenderer().setSeriesPaint(2, new GradientPaint(0.0f, 0.0f, new Color(0xFF, 0xFF, 0x22), 0.0f, 0.0f, new Color(0xFF, 0xFF, 0x88)));
    try

    {

      ChartUtilities.saveChartAsPNG(new File("resources/ranking/BarGraph.png"), chart, 1000, 768);

    }

    catch (IOException e)

    {

      e.printStackTrace();

    }
    return chart;
  }
}
TOP

Related Classes of synalp.generation.ranker.graphics.StackedBarChart

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.