我如何在 JDBC 中随时间 "HH:mm:ss MM-dd-yy" 绘制 csv(如何导入和绘制)
how can i Plot csv in JDBC with time "HH:mm:ss MM-dd-yy" (how to import and plot)
您好,目前我正在尝试从 CSV 中绘制数据,我有代码,但它无法采用 HH:mm:ss MM-dd-yy,我拥有的代码仅适用于浮点数而非时间戳。我需要绘制它,它是当前值与时间的关系,例如:
“2016-05-15 00:00:00” “20”
“2016-05-15 00:00:01” “22”
并且数据在我的本地驱动器中,代码如下:
文件reader:
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),我该怎么办?
我不熟悉 JFreeChart 类 以及这种绘图的具体工作原理,但是由于 XYSeries#add 方法似乎只接受双精度值作为第一个参数,您将无法传递日期值。
因此,我认为使用这种方法无法实现您的目标。
可以通过将相应的字符串解析为 Date 对象并使用其 getTime() 方法来 "interpret" 时间戳。
但是 注意:getTime() returns 一个长值,而不是双精度值!
旁注:要将字符串解析为日期对象,请分别参考 DateFormat SimpleDateFormat 及其 parse(String s) 方法。
您好,目前我正在尝试从 CSV 中绘制数据,我有代码,但它无法采用 HH:mm:ss MM-dd-yy,我拥有的代码仅适用于浮点数而非时间戳。我需要绘制它,它是当前值与时间的关系,例如: “2016-05-15 00:00:00” “20” “2016-05-15 00:00:01” “22” 并且数据在我的本地驱动器中,代码如下:
文件reader:
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),我该怎么办?
我不熟悉 JFreeChart 类 以及这种绘图的具体工作原理,但是由于 XYSeries#add 方法似乎只接受双精度值作为第一个参数,您将无法传递日期值。 因此,我认为使用这种方法无法实现您的目标。
可以通过将相应的字符串解析为 Date 对象并使用其 getTime() 方法来 "interpret" 时间戳。 但是 注意:getTime() returns 一个长值,而不是双精度值!
旁注:要将字符串解析为日期对象,请分别参考 DateFormat SimpleDateFormat 及其 parse(String s) 方法。