Example usage for org.jfree.chart.axis NumberAxis setRange

List of usage examples for org.jfree.chart.axis NumberAxis setRange

Introduction

In this page you can find the example usage for org.jfree.chart.axis NumberAxis setRange.

Prototype

public void setRange(double lower, double upper) 

Source Link

Document

Sets the range for the axis and sends a change event to all registered listeners.

Usage

From source file:org.ow2.clif.jenkins.chart.FixedSliceSizeDistributionChart.java

@Override
protected JFreeChart createChart() {
    JFreeChart chart = ChartFactory.createHistogram(getBasicTitle(),
            Messages.FixedSliceSizeDistributionChart_ResponseTime(),
            Messages.FixedSliceSizeDistributionChart_NumberOfCalls(), data, PlotOrientation.VERTICAL, true,
            true, false);/*  w w  w.  j  a  v a2s  .  c o  m*/

    if (data.getSeriesCount() != 0 && data.getItemCount(0) > 0) {

        double rangeStart = data.getStartX(0, 0).doubleValue();
        double rangeEnd = data.getEndX(0, data.getItemCount(0) - 1).doubleValue();

        NumberAxis domainAxis = new HistogramAxis(data, 0);
        domainAxis.setAutoRangeIncludesZero(false);
        domainAxis.setVerticalTickLabels(true);
        domainAxis.setTickLabelsVisible(true);
        domainAxis.setTickMarksVisible(true);

        domainAxis.setRange(rangeStart, rangeEnd);
        chart.getXYPlot().setDomainAxis(domainAxis);

        NumberAxis rangeAxis = (NumberAxis) chart.getXYPlot().getRangeAxis();
        rangeAxis.setAutoRangeIncludesZero(true);
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    }

    chart.getXYPlot().setRangeGridlinesVisible(true);
    chart.getXYPlot().setDomainGridlinesVisible(false);
    return chart;
}

From source file:ch.zhaw.simulation.diagram.charteditor.DefaultNumberAxisEditor.java

/**
 * Sets the properties of the specified axis to match the properties defined
 * on this panel.//w  ww  .j  a v  a2  s . c o  m
 * 
 * @param axis
 *            the axis.
 */
public void setAxisProperties(Axis axis) {
    super.setAxisProperties(axis);
    NumberAxis numberAxis = (NumberAxis) axis;
    numberAxis.setAutoRange(this.autoRange);
    if (!this.autoRange) {
        numberAxis.setRange(this.minimumValue, this.maximumValue);
    }
}

From source file:DashboardInterface.LaunchGraph.java

/**
* Creates a chart.//  w w  w.  java2 s  .co m
*
* @param dataset  a dataset.
*
* @return A chart.
*/
private JFreeChart createChart(XYDataset dataset) {

    JFreeChart chart = ChartFactory.createXYLineChart("Speed, Height and Tension v Time:", // title
            "Time", // x-axis label
            "Speed", // y-axis label
            null, // data
            PlotOrientation.VERTICAL, true, // create legend?
            true, // generate tooltips?
            false // generate URLs?
    );

    chart.setBackgroundPaint(Color.white);

    plot = chart.getXYPlot();
    XYSplineRenderer splinerenderer1 = new XYSplineRenderer();
    XYSplineRenderer splinerenderer2 = new XYSplineRenderer();
    XYSplineRenderer splinerenderer3 = new XYSplineRenderer();

    XYDataset dataset1 = createDataset(0L, 130000);
    plot.setDataset(0, dataset1);
    plot.setRenderer(0, splinerenderer1);
    plot.getRenderer().setSeriesPaint(0, Color.MAGENTA);
    NumberAxis domainAxis = new NumberAxis("Time (Seconds from Start of Launch)");
    plot.setDomainAxis(domainAxis);
    //domainAxis.setRange(0, 30);
    NumberAxis heightYAxis = new NumberAxis("Height");
    heightYAxis.setRange(0, 1050);
    plot.setRangeAxis(heightYAxis);
    datasetMap.put("HEIGHT", dataset1);

    XYDataset dataset2 = createDataset2();
    plot.setDataset(1, dataset2);
    plot.setRenderer(1, splinerenderer2);
    plot.getRenderer().setSeriesPaint(1, Color.BLUE);
    NumberAxis speedYAxis = new NumberAxis("Speed");
    speedYAxis.setRange(0, 50);
    plot.setRangeAxis(1, speedYAxis);
    datasetMap.put("SPEED", dataset2);

    XYDataset dataset3 = createDataset3();
    plot.setDataset(2, dataset3);
    plot.setRenderer(2, splinerenderer3);
    NumberAxis tensionYAxis = new NumberAxis("Tension");
    plot.getRenderer().setSeriesPaint(2, Color.RED);
    tensionYAxis.setRange(0, 8000);
    plot.setRangeAxis(2, tensionYAxis);
    datasetMap.put("TENSION", dataset3);

    plot.mapDatasetToRangeAxis(0, 0);//1st dataset to 1st y-axis
    plot.mapDatasetToRangeAxis(1, 1); //2nd dataset to 2nd y-axis
    plot.mapDatasetToRangeAxis(2, 2);

    //float[] dashArray = {1,1,1,0};
    //plot.addRangeMarker(new ValueMarker(maxTensionMarker, Color.YELLOW, new BasicStroke(1, 0, 0, 1, dashArray, 0)));
    //XYTextAnnotation text = new XYTextAnnotation("Max Tension", 10, maxTensionMarker);
    //text.setFont(new Font("SansSerif", Font.PLAIN, 9));
    //plot.addAnnotation(text);

    XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
    renderer.setBaseShapesVisible(false);
    renderer.setBaseShapesFilled(false);

    XYLineAndShapeRenderer renderer2 = (XYLineAndShapeRenderer) plot.getRendererForDataset(speedDataset);
    renderer2.setBaseShapesVisible(false);
    renderer2.setBaseShapesFilled(false);

    XYLineAndShapeRenderer renderer3 = (XYLineAndShapeRenderer) plot.getRendererForDataset(tensionDataset);
    renderer3.setBaseShapesVisible(false);
    renderer3.setBaseShapesFilled(false);

    return chart;
}

From source file:net.vanosten.dings.swing.SummaryView.java

public void displayTimeSeriesChart(final TimeSeriesCollection averageScore, final int maxScoreRange,
        final TimeSeriesCollection numberOfEntries, final int maxTotalRange) {
    final JFreeChart chart = ChartFactory.createTimeSeriesChart("Time Series", "Date", "Average Score",
            averageScore, true, true, false);

    chart.setBackgroundPaint(Color.white);
    final XYPlot plot = chart.getXYPlot();
    plot.setOrientation(PlotOrientation.VERTICAL);
    plot.setBackgroundPaint(Color.lightGray);
    plot.setDomainGridlinePaint(Color.white);
    plot.setRangeGridlinePaint(Color.white);

    final XYItemRenderer renderer1 = plot.getRenderer();
    renderer1.setPaint(Color.blue);

    //axis 1/* w w w .  j a  va  2 s  .c o m*/
    final NumberAxis axis1 = new NumberAxis("Average Score");
    axis1.setLabelPaint(Color.blue);
    axis1.setTickLabelPaint(Color.blue);
    axis1.setRange(0.0d, maxScoreRange + 1);
    plot.setRangeAxis(0, axis1);

    //axis 2
    final NumberAxis axis2 = new NumberAxis("Number of Entries");
    axis2.setLabelPaint(Color.red);
    axis2.setTickLabelPaint(Color.red);
    axis2.setRange(0.0d, 10 * (((int) (maxTotalRange / 10)) + 1));
    plot.setRangeAxis(1, axis2);

    plot.setDataset(1, numberOfEntries);
    plot.mapDatasetToRangeAxis(1, 1);
    final StandardXYItemRenderer renderer2 = new StandardXYItemRenderer();
    renderer2.setPaint(Color.red);
    plot.setRenderer(1, renderer2);

    placeChart(chart);
}

From source file:mrmc.chart.ROCCurvePlot.java

/**
 * Sole constructor. Creates a line plot display ROC curves
 * /*from   ww w.j a va  2 s.  co m*/
 * @param title Title of the chart
 * @param xaxis x-axis label
 * @param yaxis y-axis label
 * @param treeMap Mapping of readers to a set of points defining an ROC curve
 */
public ROCCurvePlot(final String title, String xaxis, String yaxis, TreeMap<String, TreeSet<XYPair>> treeMap) {
    super(title);

    createDataset(treeMap);
    final JFreeChart chart = ChartFactory.createScatterPlot(title, xaxis, yaxis, seriesCollection,
            PlotOrientation.VERTICAL, true, true, false);
    XYPlot xyplot = (XYPlot) chart.getPlot();
    xyplot.setDomainCrosshairVisible(true);
    xyplot.setRangeCrosshairVisible(true);
    NumberAxis domain = (NumberAxis) xyplot.getDomainAxis();
    domain.setRange(0.00, 1.00);
    domain.setTickUnit(new NumberTickUnit(0.1));
    NumberAxis range = (NumberAxis) xyplot.getRangeAxis();
    range.setRange(0.00, 1.00);
    range.setTickUnit(new NumberTickUnit(0.1));
    renderer = new XYLineAndShapeRenderer();
    chart.getXYPlot().setRenderer(renderer);
    ChartPanel chartPanel = new ChartPanel(chart);

    JPanel readerSelect = new JPanel(new WrapLayout());
    readerSeriesBoxes = new ArrayList<JCheckBox>();

    for (String r : treeMap.keySet()) {
        JCheckBox aBox = new JCheckBox("" + r);
        aBox.setSelected(false);
        aBox.addItemListener(new SeriesSelectListener());
        hideSeries("" + r);
        readerSeriesBoxes.add(aBox);
        readerSelect.add(aBox);
    }

    renderer.setSeriesShapesVisible(seriesCollection.getSeriesIndex("Vertical Average"), false);
    renderer.setSeriesStroke(seriesCollection.getSeriesIndex("Vertical Average"), new java.awt.BasicStroke(3f));
    renderer.setSeriesShapesVisible(seriesCollection.getSeriesIndex("Horizontal Average"), false);
    renderer.setSeriesStroke(seriesCollection.getSeriesIndex("Horizontal Average"),
            new java.awt.BasicStroke(3f));
    renderer.setSeriesShapesVisible(seriesCollection.getSeriesIndex("Diagonal Average"), false);
    renderer.setSeriesStroke(seriesCollection.getSeriesIndex("Diagonal Average"), new java.awt.BasicStroke(3f));
    renderer.setSeriesStroke(seriesCollection.getSeriesIndex("Pooled Average"), new java.awt.BasicStroke(3f));

    vert = new JCheckBox("Vertical Average");
    vert.setSelected(true);
    vert.addItemListener(new SeriesSelectListener());
    readerSelect.add(vert);
    horiz = new JCheckBox("Horizontal Average");
    horiz.setSelected(true);
    horiz.addItemListener(new SeriesSelectListener());
    readerSelect.add(horiz);
    diag = new JCheckBox("Diagonal Average");
    diag.setSelected(true);
    diag.addItemListener(new SeriesSelectListener());
    readerSelect.add(diag);
    pooled = new JCheckBox("Pooled Average");
    pooled.setSelected(true);
    pooled.addItemListener(new SeriesSelectListener());
    readerSelect.add(pooled);

    JCheckBox allReaders = new JCheckBox("Show Readers");
    allReaders.setSelected(false);
    allReaders.addItemListener(new ReadersSelectListener());
    readerSelect.add(allReaders);
    JCheckBox allAverages = new JCheckBox("Show Averages");
    allAverages.setSelected(true);
    allAverages.addItemListener(new AverageSelectListener());
    readerSelect.add(allAverages);

    chartPanel.setPreferredSize(new java.awt.Dimension(700, 700));
    this.add(chartPanel);
    this.add(readerSelect, BorderLayout.PAGE_END);

}

From source file:net.sf.mzmine.modules.visualization.tic.TICVisualizerWindow.java

public void setAxesRange(double xMin, double xMax, double xTickSize, double yMin, double yMax,
        double yTickSize) {
    NumberAxis xAxis = (NumberAxis) ticPlot.getXYPlot().getDomainAxis();
    NumberAxis yAxis = (NumberAxis) ticPlot.getXYPlot().getRangeAxis();
    xAxis.setRange(xMin, xMax);
    xAxis.setTickUnit(new NumberTickUnit(xTickSize));
    yAxis.setRange(yMin, yMax);/*  w w  w. ja  va 2 s  .c o m*/
    yAxis.setTickUnit(new NumberTickUnit(yTickSize));
}

From source file:com.att.aro.ui.view.overviewtab.TraceBenchmarkChartPanel.java

private JFreeChart initializeChart() {

    JFreeChart chart = ChartFactory.createBarChart(
            ResourceBundleHelper.getMessageString("overview.traceoverview.title"), null, null, createDataset(),
            PlotOrientation.HORIZONTAL, false, true, false);
    chart.setBackgroundPaint(this.getBackground());
    chart.getTitle().setFont(AROUIManager.HEADER_FONT);

    this.plot = chart.getCategoryPlot();
    plot.setBackgroundPaint(Color.white);
    plot.setDomainGridlinePaint(Color.gray);
    plot.setRangeGridlinePaint(Color.gray);
    plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);

    CategoryAxis valueRangeAxis = plot.getDomainAxis();
    valueRangeAxis.setMaximumCategoryLabelWidthRatio(1.0f);
    valueRangeAxis.setMaximumCategoryLabelLines(2);
    valueRangeAxis.setLabelFont(AROUIManager.LABEL_FONT);
    valueRangeAxis.setTickLabelFont(AROUIManager.LABEL_FONT);

    NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
    rangeAxis.setLabel(ResourceBundleHelper.getMessageString("analysisresults.percentile"));
    rangeAxis.setRange(0.0, 100.0);
    rangeAxis.setTickUnit(new NumberTickUnit(10));
    rangeAxis.setLabelFont(AROUIManager.LABEL_FONT);
    rangeAxis.setTickLabelFont(AROUIManager.LABEL_FONT);

    BarRenderer renderer = new StackedBarRenderer();
    renderer.setBasePaint(AROUIManager.CHART_BAR_COLOR);
    renderer.setAutoPopulateSeriesPaint(false);
    renderer.setBaseItemLabelGenerator(new PercentLabelGenerator());
    renderer.setBaseItemLabelsVisible(true);
    renderer.setBaseItemLabelPaint(Color.black);

    // Make second bar in stack invisible
    renderer.setSeriesItemLabelsVisible(1, false);
    renderer.setSeriesPaint(1, new Color(0, 0, 0, 0));

    ItemLabelPosition insideItemlabelposition = new ItemLabelPosition(ItemLabelAnchor.INSIDE3,
            TextAnchor.CENTER_RIGHT);/*from   w  w w. j a  v  a  2 s . c  o m*/
    renderer.setBasePositiveItemLabelPosition(insideItemlabelposition);

    ItemLabelPosition outsideItemlabelposition = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3,
            TextAnchor.CENTER_LEFT);
    renderer.setPositiveItemLabelPositionFallback(outsideItemlabelposition);

    renderer.setBarPainter(new StandardBarPainter());
    renderer.setShadowVisible(false);
    renderer.setMaximumBarWidth(BAR_WIDTH_PERCENT);
    renderer.setBaseToolTipGenerator(new CategoryToolTipGenerator() {
        @Override
        public String generateToolTip(CategoryDataset arg0, int arg1, int arg2) {
            String traceInfo = "";
            switch (arg2) {
            case TRACE_AVERAGE:
                traceInfo = ResourceBundleHelper.getMessageString("tooltip.traceAnalysis.avg");
                break;
            case TRACE_ENERGY:
                traceInfo = ResourceBundleHelper.getMessageString("tooltip.traceAnalysis.engy");
                break;
            case TRACE_OVERHEAD:
                traceInfo = ResourceBundleHelper.getMessageString("tooltip.traceAnalysis.ovrhd");
                break;
            default:
                break;
            }

            return traceInfo;
        }
    });

    plot.setRenderer(renderer);
    plot.getDomainAxis().setMaximumCategoryLabelLines(2);

    return chart;

}

From source file:playground.christoph.evacuation.analysis.AgentsInMunicipalityEventsHandler.java

private JFreeChart getGraphic() {
    final XYSeriesCollection xyData = new XYSeriesCollection();
    final XYSeries insideSerie = new XYSeries("total inside area", false, true);
    final XYSeries residentsSerie = new XYSeries("residents inside area", false, true);
    final XYSeries commutersSerie = new XYSeries("commuters inside area", false, true);

    for (int i = 0; i < plotData.size(); i++) {
        PlotData pd = plotData.get(i);//w w w  .ja  v  a 2s  . co  m
        double hour = pd.time / 3600.0;
        insideSerie.add(hour, pd.commuterAgentCount + pd.residentAgentCount);
        residentsSerie.add(hour, pd.residentAgentCount);
        commutersSerie.add(hour, pd.commuterAgentCount);
    }
    xyData.addSeries(insideSerie);
    xyData.addSeries(residentsSerie);
    xyData.addSeries(commutersSerie);

    final JFreeChart chart = ChartFactory.createXYStepChart("agents inside area", "time [hour]", "# agents",
            xyData, PlotOrientation.VERTICAL, true, // legend
            false, // tooltips
            false // urls
    );

    XYPlot plot = chart.getXYPlot();

    NumberAxis na = new NumberAxis("time [hour]");
    na.setRange(0, maxTime / 3600.0);
    na.setLabelFont(plot.getRangeAxis().getLabelFont());
    na.setTickLabelFont(plot.getRangeAxis().getTickLabelFont());
    plot.setDomainAxis(na);
    return chart;
}

From source file:MSUmpire.DIA.MixtureModelKDESemiParametric.java

public void GeneratePlot(String pngfile) throws IOException {
    String modelfile = FilenameUtils.getFullPath(pngfile) + "/" + FilenameUtils.getBaseName(pngfile)
            + "_ModelPoints.txt";
    FileWriter writer = new FileWriter(modelfile);

    double[] IDObs = new double[IDEmpiricalDist.getN()];
    double[] DecoyObs = new double[DecoyEmpiricalDist.getN()];

    for (int i = 0; i < IDEmpiricalDist.getN(); i++) {
        IDObs[i] = IDEmpiricalDist.getObs(i);
    }//w  w w.  j a v  a 2 s  .  c o m
    for (int i = 0; i < DecoyEmpiricalDist.getN(); i++) {
        DecoyObs[i] = DecoyEmpiricalDist.getObs(i);
    }

    XYSeries model1 = new XYSeries("Incorrect matches");
    XYSeries model2 = new XYSeries("Correct matches");
    XYSeries model3 = new XYSeries("All target hits");

    writer.write("UScore\tModel\tCorrect\tDecoy\n");
    for (int i = 0; i < NoBinPoints; i++) {
        model1.add(model_kde_x[i], decoy_kde_y[i]);
        model2.add(model_kde_x[i], correct_kde_y[i]);
        model3.add(model_kde_x[i], model_kde_y[i]);
        writer.write(model_kde_x[i] + "\t" + model_kde_y[i] + "\t" + correct_kde_y[i] + "\t" + decoy_kde_y[i]
                + "\n");
    }
    writer.close();

    MixtureModelProb = new float[NoBinPoints + 1][3];
    float positiveaccu = 0f;
    float negativeaccu = 0f;

    MixtureModelProb[0][0] = (float) model2.getMaxX() + Float.MIN_VALUE;
    MixtureModelProb[0][1] = 1f;
    MixtureModelProb[0][2] = 1f;

    for (int i = 1; i < NoBinPoints + 1; i++) {
        double positiveNumber = correct_kde_y[NoBinPoints - i];
        double negativeNumber = decoy_kde_y[NoBinPoints - i];
        MixtureModelProb[i][0] = (float) model_kde_x[NoBinPoints - i];
        positiveaccu += positiveNumber;
        negativeaccu += negativeNumber;
        MixtureModelProb[i][2] = 0.999999f * (float) (positiveNumber / (negativeNumber + positiveNumber));
        MixtureModelProb[i][1] = 0.999999f * (float) (positiveaccu / (negativeaccu + positiveaccu));
    }

    XYSeriesCollection dataset = new XYSeriesCollection();
    dataset.addSeries(model1);
    dataset.addSeries(model2);
    dataset.addSeries(model3);

    HistogramDataset histogramDataset = new HistogramDataset();
    histogramDataset.setType(HistogramType.SCALE_AREA_TO_1);
    histogramDataset.addSeries("ID hits", IDObs, 100);
    histogramDataset.addSeries("Decoy hits", DecoyObs, 100);
    //histogramDataset.addSeries("Model hits", ModelObs, 100);

    JFreeChart chart = ChartFactory.createHistogram(FilenameUtils.getBaseName(pngfile), "Score", "Hits",
            histogramDataset, PlotOrientation.VERTICAL, true, false, false);
    XYPlot plot = chart.getXYPlot();

    NumberAxis domain = (NumberAxis) plot.getDomainAxis();
    domain.setRange(min, max);
    plot.setBackgroundPaint(Color.white);
    plot.setDomainGridlinePaint(Color.white);
    plot.setRangeGridlinePaint(Color.white);
    plot.setForegroundAlpha(0.8f);
    chart.setBackgroundPaint(Color.white);

    XYLineAndShapeRenderer render = new XYLineAndShapeRenderer();

    plot.setDataset(1, dataset);
    plot.setRenderer(1, render);
    plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
    try {
        ChartUtilities.saveChartAsPNG(new File(pngfile), chart, 1000, 600);
    } catch (IOException e) {
    }
}

From source file:com.att.aro.ui.view.overviewtab.ConnectionStatisticsChartPanel.java

public JFreeChart initializeChart() {
    JFreeChart chart = ChartFactory.createBarChart(
            ResourceBundleHelper.getMessageString("overview.sessionoverview.title"), null, null,
            createDataset(), PlotOrientation.HORIZONTAL, false, false, false);
    chart.setBackgroundPaint(this.getBackground());
    chart.getTitle().setFont(AROUIManager.HEADER_FONT);

    this.plot = chart.getCategoryPlot();
    plot.setBackgroundPaint(Color.white);
    plot.setDomainGridlinePaint(Color.gray);
    plot.setRangeGridlinePaint(Color.gray);
    plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);

    CategoryAxis domainAxis = plot.getDomainAxis();
    domainAxis.setMaximumCategoryLabelWidthRatio(1.0f);
    domainAxis.setMaximumCategoryLabelLines(2);
    domainAxis.setLabelFont(AROUIManager.LABEL_FONT);
    domainAxis.setTickLabelFont(AROUIManager.LABEL_FONT);

    NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
    rangeAxis.setLabel(ResourceBundleHelper.getMessageString("analysisresults.percentage"));
    rangeAxis.setRange(0.0, 100.0);
    rangeAxis.setTickUnit(new NumberTickUnit(10));
    rangeAxis.setLabelFont(AROUIManager.LABEL_FONT);
    rangeAxis.setTickLabelFont(AROUIManager.LABEL_FONT);

    BarRenderer renderer = new StackedBarRenderer();
    renderer.setBasePaint(AROUIManager.CHART_BAR_COLOR);
    renderer.setAutoPopulateSeriesPaint(false);
    renderer.setBaseItemLabelGenerator(new PercentLabelGenerator());
    renderer.setBaseItemLabelsVisible(true);
    renderer.setBaseItemLabelPaint(Color.black);

    // Make second bar in stack invisible
    renderer.setSeriesItemLabelsVisible(1, false);
    renderer.setSeriesPaint(1, new Color(0, 0, 0, 0));

    ItemLabelPosition insideItemlabelposition = new ItemLabelPosition(ItemLabelAnchor.INSIDE3,
            TextAnchor.CENTER_RIGHT);/* w ww . ja v  a  2 s. c o m*/
    renderer.setBasePositiveItemLabelPosition(insideItemlabelposition);

    ItemLabelPosition outsideItemlabelposition = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3,
            TextAnchor.CENTER_LEFT);
    renderer.setPositiveItemLabelPositionFallback(outsideItemlabelposition);

    renderer.setBarPainter(new StandardBarPainter());
    renderer.setShadowVisible(false);
    renderer.setMaximumBarWidth(BAR_WIDTH_PERCENT);

    renderer.setBaseToolTipGenerator(new CategoryToolTipGenerator() {
        @Override
        public String generateToolTip(CategoryDataset arg0, int arg1, int arg2) {
            String sessionInfo = "";
            switch (arg2) {
            case SESSION_TERMINATION:
                sessionInfo = ResourceBundleHelper.getMessageString("tooltip.sessionTermination");
                break;
            case SESSION_TIGHT_CONN:
                sessionInfo = ResourceBundleHelper.getMessageString("tooltip.sessionTightConn");
                break;
            case SESSION_BURST:
                sessionInfo = ResourceBundleHelper.getMessageString("tooltip.sessionBurst");
                break;
            case SESSION_LONG_BURST:
                sessionInfo = ResourceBundleHelper.getMessageString("tooltip.sessionLongBurst");
                break;
            default:
                break;
            }

            return sessionInfo;
        }
    });

    plot.setRenderer(renderer);
    plot.getDomainAxis().setMaximumCategoryLabelLines(2);

    return chart;
}