how to plot day-wise chart using Jfreechart

2020-06-28 16:26发布

问题:

I have data for every 15 minutes. I want to plot a graph to display values from 'date1' to 'date2'. The plot should show every 15 minutes value. But display on X-axis should show only dates.

回答1:

How to create a sample XYPlot with 15 minute intervals (shown as date)

1) Create your data.

   XYSeries dataSeries = new XYSeries("SMS Sent");

2) Add your axes. If you want the x-axis to show dates, use a DateAxis as the x-axis. Input your date data as a long (in milliseconds). jfreecharts will take care of the formatting for you.

    DateAxis dateAxis = new DateAxis(timeAxisTitle);

    DateTickUnit unit = null;
    unit = new DateTickUnit(DateTickUnit.MINUTE,15);

    DateFormat chartFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm");
    dateAxis.setDateFormatOverride(chartFormatter);

    dateAxis.setTickUnit(unit);

    NumberAxis valueAxis = new NumberAxis(valueAxisTitle);

3) Use a DateTickUnit object to set the tick size (e.g. 15 mins.) This will plot a point every 15 mins.

4) Use a Tooltip generator to generate tooltips (optional)

    XYSeriesCollection xyDataset = new XYSeriesCollection(dataSeries);

    StandardXYToolTipGenerator ttg = new StandardXYToolTipGenerator(
            "{0}: {2}", chartFormatter, NumberFormat.getInstance());


    StandardXYItemRenderer renderer = new StandardXYItemRenderer(
            StandardXYItemRenderer.SHAPES_AND_LINES, ttg, null);

    renderer.setShapesFilled(true);

    XYPlot plot = new XYPlot(xyDataset, dateAxis, valueAxis, renderer);

    JFreeChart chart = new JFreeChart(chartTitle, JFreeChart.DEFAULT_TITLE_FONT, plot, false);
    chart.setBackgroundPaint(java.awt.Color.WHITE);

5) create the chart by instantiating a new JFreeChart object. You can then save it or display it on screen. Refer to Java documentation on how to do this.