2012-04-24 4 views
4

Я просто хочу получить точки данных на моем графике, чтобы показать, как это сделать? Сюжет неплохо выглядит как линейный график, но я хочу небольшие маркеры для каждой отдельной точки данных.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; 
} 

ответ

6

JFreeChart.createTimeSeriesChart() использует XYLineAndShapeRenderer, так начните, делая форму видимой.

renderer.setSeriesShapesVisible(true); 

это связано example иллюстрирует некоторые из других методов, которые влияют на внешний вид.

+2

Этот метод теперь требует 2 параметра. «Int» и «boolean». «Int» представляет серию, а «boolean» - это флаг. Таким образом, синтаксис теперь выглядит как «renderer.setSeriesShapesVisible (0, true);». – Tom

Смежные вопросы