JFreeChart如何获取时间序列图表上显示的数据点

时间:2012-04-24 20:40:16

标签: java swing jfreechart

我只是想让我的图表上的数据点显示出来,我该怎么做?该图显示为线图,但我希望每个数据点都有小标记。

应用程序的JFreeChart部分是:

    private XYDataset createDataset() {
    final TimeSeries inclinometerAngles = new TimeSeries(TimeUnit.SECONDS);

    // Add all data from the map to the dataset
    final Set<Date> keys = data.keySet();
    for (Date date : keys) {
        Record r = data.get(date);
        if (r.mcInclinometerAngle != null) {
            inclinometerAngles.add(new Second(date), r.mcInclinometerAngle);
        }
    }        

    final TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(inclinometerAngles);
    return dataset;
}   

private void setupGraphics() {
    final XYDataset dataset = createDataset();
    final JFreeChart chart = createChart(dataset);
    final ChartPanel chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
    chartPanel.setMouseZoomable(true, false);
    setContentPane(chartPanel);
}

private JFreeChart createChart(final XYDataset dataset) {
    final JFreeChart chart = ChartFactory.createTimeSeriesChart(
        "Tracker Analysis", 
        "Date", 
        "Value",
        dataset, 
        true, 
        true, 
        false
    );

    final XYPlot plot = chart.getXYPlot();
    XYItemRenderer renderer = plot.getRenderer();

    final StandardXYToolTipGenerator g = new StandardXYToolTipGenerator(
        StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
        new SimpleDateFormat(), new DecimalFormat("0.00")
    );
    renderer.setToolTipGenerator(g);
    renderer.setItemLabelsVisible(true);
    return chart;
}  

1 个答案:

答案 0 :(得分:7)

JFreeChart.createTimeSeriesChart()使用XYLineAndShapeRenderer,因此首先要使形状可见。

renderer.setSeriesShapesVisible(true);

这个相关的example说明了影响外观的一些其他方法。