嗨目前我正在尝试从CSV绘制数据,我有代码,但它无法采用HH:mm:ss MM-dd-yy,我的代码只是浮动而不是时间戳。我需要绘制它,它是时间的当前值,如: “2016-05-15 00:00:00”“20” “2016-05-15 00:00:01”“22” 并且数据在我的本地驱动器中,代码如下:
文件阅读器:
public XYSeriesCollection createDataset() throws NumberFormatException,
IOException {
dataset = new XYSeriesCollection();
try {
reader = new CSVReader(new FileReader("/usr/csv_dump.csv"),'\t');
// Read the header and chuck it away
readNextLine = reader.readNext();
导入数据:
// Set up series
final XYSeries seriesX = new XYSeries("X");
while ((readNextLine = reader.readNext()) != null) {
// add values to dataset
double Time = Double.valueOf(readNextLine[0]);
double X = Long.valueOf(readNextLine[1]);
seriesX.add(Time, X);
}
System.out.println(seriesX.getMaxX() + "; " + seriesX.getMaxY());
dataset.addSeries(seriesX);
} catch (FileNotFoundException e) {
System.out.println("File not found!");
}
return dataset;
}
public JFreeChart createChart(XYDataset dataset)
throws NumberFormatException, IOException {
chart = ChartFactory.createXYLineChart("Acceleration vs Time", // chart
// title
"Time", // domain axis label
"Acceleration", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // the plot orientation
true, // legend
true, // tooltips
false); // urls
return chart;
}
你可以看到它只能读取双倍而不是时间,如果我想导入时间(HH:mm:ss MM-dd-yy),我该怎么办呢?
答案 0 :(得分:0)
我不熟悉JFreeChart类以及这种情节究竟是如何工作的,但由于XYSeries #add方法似乎只接受double值作为第一个参数,因此您无法通过日期值。 因此,我不认为使用这种方法可以实现您的目标。
有可能"解释"时间戳通过将相应的String解析为Date对象并使用其getTime()方法。 但是要小心:getTime()返回一个long,而不是double值!
注意:要将String解析为Date对象,请分别引用DateFormat SimpleDateFormat及其解析(String s)方法。