Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中导入和打印带有时间戳的CSV_Java_Date_Jfreechart - Fatal编程技术网

如何在Java中导入和打印带有时间戳的CSV

如何在Java中导入和打印带有时间戳的CSV,java,date,jfreechart,Java,Date,Jfreechart,您好,目前我正在尝试将CSV文件导入Java以绘制数据,基本上,我可以成功导入,但它在我的CSV中不起作用,因为它的时间格式为:HH:mm:ss mm dd yy 数据如下: 2016-05-15 00:00:00 0 2016-05-15 00:00:00 0 2016-05-15 00:00:00 5.44852 2016-05-15 00:00:01 0 2016-05-15 00:00:01 0 2016-05-15 00:00:01 5.26064 import java.io.Fi

您好,目前我正在尝试将CSV文件导入Java以绘制数据,基本上,我可以成功导入,但它在我的CSV中不起作用,因为它的时间格式为:
HH:mm:ss mm dd yy

数据如下:

2016-05-15 00:00:00 0
2016-05-15 00:00:00 0
2016-05-15 00:00:00 5.44852
2016-05-15 00:00:01 0
2016-05-15 00:00:01 0
2016-05-15 00:00:01 5.26064
import java.io.FileNotFoundException; 
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import org.jfree.chart.axis.DateAxis;
import org.jfree.data.time.Minute;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

import au.com.bytecode.opencsv.CSVReader;
public class Test extends ApplicationFrame{
/**
 * 
 */
private static final long serialVersionUID = 1L;
XYSeriesCollection dataset;
JFreeChart chart;
final ChartPanel chartPanel;
final int chartWidth = 560;
final int chartHeight = 367;
CSVReader reader;
String[] readNextLine;
XYSeries series;

public Test(String applicationTitle) throws IOException {
    super(applicationTitle);
    dataset = createDataset();
    chart = createChart(dataset);
    chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new java.awt.Dimension(chartHeight,
            chartWidth));
    this.add(chartPanel);
}

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");
        final XYSeries seriesY = new XYSeries("Y");
        final XYSeries seriesZ = new XYSeries("Z");

        while ((readNextLine = reader.readNext()) != null) {
            // add values to dataset

            double Time = Double.valueOf(readNextLine[0]);
            double X = Long.valueOf(readNextLine[1]);
            double Y = Long.valueOf(readNextLine[2]);
            double Z = Long.valueOf(readNextLine[3]);
            seriesX.add(Time, X);
            seriesY.add(Time, Y);
            seriesZ.add(Time, Z);

        }

        System.out.println(seriesX.getMaxX() + "; " + seriesX.getMaxY());

        dataset.addSeries(seriesX);
        dataset.addSeries(seriesY);
        dataset.addSeries(seriesZ);
    } 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;
    }

public static void main(String[] args) throws IOException {
    System.out.println("In here, to create a Test");
    final Test demo = new Test("Test XY Line chart");
    System.out.println("Created, pakcking");
    demo.pack();
    RefineryUtilities.centerFrameOnScreen(demo);
    demo.setVisible(true);
}
代码如下:

2016-05-15 00:00:00 0
2016-05-15 00:00:00 0
2016-05-15 00:00:00 5.44852
2016-05-15 00:00:01 0
2016-05-15 00:00:01 0
2016-05-15 00:00:01 5.26064
import java.io.FileNotFoundException; 
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import org.jfree.chart.axis.DateAxis;
import org.jfree.data.time.Minute;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

import au.com.bytecode.opencsv.CSVReader;
public class Test extends ApplicationFrame{
/**
 * 
 */
private static final long serialVersionUID = 1L;
XYSeriesCollection dataset;
JFreeChart chart;
final ChartPanel chartPanel;
final int chartWidth = 560;
final int chartHeight = 367;
CSVReader reader;
String[] readNextLine;
XYSeries series;

public Test(String applicationTitle) throws IOException {
    super(applicationTitle);
    dataset = createDataset();
    chart = createChart(dataset);
    chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new java.awt.Dimension(chartHeight,
            chartWidth));
    this.add(chartPanel);
}

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");
        final XYSeries seriesY = new XYSeries("Y");
        final XYSeries seriesZ = new XYSeries("Z");

        while ((readNextLine = reader.readNext()) != null) {
            // add values to dataset

            double Time = Double.valueOf(readNextLine[0]);
            double X = Long.valueOf(readNextLine[1]);
            double Y = Long.valueOf(readNextLine[2]);
            double Z = Long.valueOf(readNextLine[3]);
            seriesX.add(Time, X);
            seriesY.add(Time, Y);
            seriesZ.add(Time, Z);

        }

        System.out.println(seriesX.getMaxX() + "; " + seriesX.getMaxY());

        dataset.addSeries(seriesX);
        dataset.addSeries(seriesY);
        dataset.addSeries(seriesZ);
    } 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;
    }

public static void main(String[] args) throws IOException {
    System.out.println("In here, to create a Test");
    final Test demo = new Test("Test XY Line chart");
    System.out.println("Created, pakcking");
    demo.pack();
    RefineryUtilities.centerFrameOnScreen(demo);
    demo.setVisible(true);
}
}


但我不知道如何在这段代码中使用时间格式。感谢所有能帮助我的人。

在这个简单的例子中

  • 使用
    simpleDataFormat
    解析给定格式的日期

  • 使用
    ChartFactory.createTimeSeriesChart()
    创建时间序列图;它将为域使用
    日期轴

数据:

2016-05-15 00:00:00,20
2016-05-15 00:01:01, 21
2016-05-15 00:02:02, 42
代码:


看看您的数据示例,您是说您的CSV本质上包含3行1个时间戳(X、Y和Z各1行)?因为代码的处理方式与此完全不同。您显示的数据与您提到的格式或您的代码不匹配。发布代码时,请将其拆分为基本内容。别逼我们做那件事。见: