[英]How to export JFreeChart Data to csv file
我已经使用Java Swing
和JFreeChart
在我们正在设计的工具中绘制图形。 现在我想将图形数据导出到CSV文件。( 说在图形上单击鼠标右键,它应该提供导出到CSV的选项,并且在选择它之后,应该在某个随机位置创建一个csv文件并将图形数据保存到其中 )。
这里的重点是如何将数据从图形保存到CSV中。 我需要使用Java Swing
和JFreeChart
来实现这一点。
尝试使用此:
JFreeChart chart;
// ... initialization of chart
XYDataSet dataSet = chart.getXYPlot().getDataset();
然后使用dataSet
非常简单。
这是一个具体的例子:
private void storeDataSet(JFreeChart chart, String filename) {
java.util.List<String> csv = new ArrayList<>();
if (chart.getPlot() instanceof XYPlot) {
Dataset dataset = chart.getXYPlot().getDataset();
XYDataset xyDataset = (XYDataset) dataset;
int seriesCount = xyDataset.getSeriesCount();
for (int i = 0; i < seriesCount; i++) {
int itemCount = xyDataset.getItemCount(i);
for (int j = 0; j < itemCount; j++) {
Comparable key = xyDataset.getSeriesKey(i);
Number x = xyDataset.getX(i, j);
Number y = xyDataset.getY(i, j);
csv.add(String.format("%s, %s, %s", key, x, y));
}
}
} else if (chart.getPlot() instanceof CategoryPlot) {
Dataset dataset = chart.getCategoryPlot().getDataset();
CategoryDataset categoryDataset = (CategoryDataset) dataset;
int columnCount = categoryDataset.getColumnCount();
int rowCount = categoryDataset.getRowCount();
for (int i = 0; i < rowCount; i++) {
for (int j = 0; j < columnCount; j++) {
Comparable key = categoryDataset.getRowKey(i);
Number n = categoryDataset.getValue(i, j);
csv.add(String.format("%s, %s", key, n));
}
}
} else {
throw new IllegalStateException("Unknown dataset");
}
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename + ".csv"));) {
for (String line : csv) {
writer.append(line);
writer.newLine();
}
} catch (IOException e) {
throw new IllegalStateException("Cannot write dataset", e);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.