【问题标题】:JFreeChart How to get data points displayed on a Time series chartJFreeChart 如何获取时间序列图表上显示的数据点
【发布时间】:2012-05-05 13:09:00
【问题描述】:

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

应用的 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;
}  

【问题讨论】:

    标签: java swing jfreechart


    【解决方案1】:

    JFreeChart.createTimeSeriesChart() 使用 XYLineAndShapeRenderer,所以首先要让形状可见。

    renderer.setSeriesShapesVisible(true);
    

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

    【讨论】:

    • 此方法现在需要 2 个参数。一个int 和一个boolean。 int 代表意甲,boolean 是国旗。所以语法现在看起来像renderer.setSeriesShapesVisible(0, true);。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多