java 读取csv文件中的第一列、第二列和第三列,根据三列数据画出三维散点图
时间: 2024-04-20 08:25:54 浏览: 118
要根据CSV文件的第一列、第二列和第三列数据绘制三维散点图,您可以使用Java的CSV库来读取CSV文件,并使用图表库(如JFreeChart)来绘制三维散点图。以下是一个简单的示例代码:
```java
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.DefaultXYZDataset;
import org.jfree.ui.ApplicationFrame;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class CSVReader extends ApplicationFrame {
public CSVReader(String title) {
super(title);
DefaultXYZDataset dataset = createDataset();
JFreeChart chart = createChart(dataset);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(chartPanel);
}
private DefaultXYZDataset createDataset() {
DefaultXYZDataset dataset = new DefaultXYZDataset();
String csvFile = "data.csv"; // 替换为您的CSV文件路径
try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
String line;
double[][] data = new double[3][];
int row = 0;
while ((line = br.readLine()) != null) {
String[] columns = line.split(","); // 假设CSV文件使用逗号作为分隔符,如果使用其他分隔符,请相应修改
if (columns.length >= 3) {
double x = Double.parseDouble(columns[0]);
double y = Double.parseDouble(columns[1]);
double z = Double.parseDouble(columns[2]);
data[0] = appendValue(data[0], x);
data[1] = appendValue(data[1], y);
data[2] = appendValue(data[2], z);
row++;
}
}
dataset.addSeries("Series 1", data);
} catch (IOException e) {
e.printStackTrace();
}
return dataset;
}
private JFreeChart createChart(DefaultXYZDataset dataset) {
JFreeChart chart = ChartFactory.createScatterPlot3D(
"CSV Data", // 图表标题
"X", // X轴标题
"Y", // Y轴标题
dataset, // 数据集
PlotOrientation.VERTICAL,
true, // 是否显示图例
true, // 是否生成工具
false // 是否生成URL链接
);
XYPlot plot = (XYPlot) chart.getPlot();
plot.setForegroundAlpha(0.75f); // 设置散点透明度
return chart;
}
private double[] appendValue(double[] array, double value) {
if (array == null) {
return new double[]{value};
} else {
double[] newArray = new double[array.length + 1];
System.arraycopy(array, 0, newArray, 0, array.length);
newArray[array.length] = value;
return newArray;
}
}
public static void main(String[] args) {
CSVReader demo = new CSVReader("CSV Data");
demo.pack();
demo.setVisible(true);
}
}
```
请替换`data.csv`为您的CSV文件路径,并根据需要调整其他参数。这段代码将读取CSV文件的第一列、第二列和第三列数据,并使用JFreeChart库绘制一个带有三维散点图的图表。
注意:在运行代码之前,您需要确保已将JFreeChart库添加到您的项目中。您可以从JFreeChart的官方网站(https://www.jfree.org/jfreechart/)下载库文件并将其添加到您的项目中。
阅读全文