在JFreeChart x轴中从Database绘制给定时间戳

时间:2014-03-06 16:04:32

标签: java jfreechart

我从数据库中获取Timestamp数据类型的值。我现在尝试在Jfreechart中绘制x轴上的时间戳值。目前我正在使用

final TimeSeries s1 = new TimeSeries("Series1", Millisecond.class);

我很困惑将时间戳值添加到时间序列中。时间戳值采用以下格式。

  

2013-07-22 17:10:49.219

任何人都可以帮助我吗?我推荐了很多网站。在某些网站中,他们建议提取要添加到系列中的日期,小时,分钟和毫秒。但是从时间戳开始我应该如何提取值?我是这个主题的新手,日期功能对我来说真的很混乱。

2 个答案:

答案 0 :(得分:4)

Timestamp是java.util.Date类的子类,因此对于JFreeChart中的TimeSeries,您可以使用此构造函数直接创建Millisecond实例:

 public Millisecond(Date time);

您的代码看起来像这样(假设s1是您的TimeSeries实例):

 TimeStamp t = ... // read from somewhere
 double value = ... // the data value associated with your timestamp
 s1.add(new Millisecond(t), value);

...当然要循环处理所有数据项。

答案 1 :(得分:2)

感谢David Gilbert的回答。 我并没有完全成功,或者我只是误解了你,但毫秒需要一个日期作为参数。 无论如何:以下代码适合我。

public class MyFrame extends JFrame {
  public MyFrame() {
    XYDataset xyData = createDataset();
    JFreeChart timeSeriesChart = 
    ChartFactory.createTimeSeriesChart("name of chart",
    "X-axis-name", "y-axis-name", xyData);

    ChartPanel panel = new ChartPanel(timeSeriesChart);
    MainPane.add(panel);
    this.pack();
  }

private XYDataset createDataset() {
        TimeSeries timeSeries = new TimeSeries("valueVsTime");

        // loop start
        long timeStamp = ...//read from somewhere, on x axis
        double value = ...//read from somewhere, on y axis
        timeSeries.add(new Millisecond(new Date(timeStamp), value));
        // loop end

        TimeSeriesCollection dataset = new TimeSeriesCollection();
        dataset.addSeries(timeSeries);
        return dataset;
    }
}