繁体   English   中英

如何将JFreeChart数据导出到CSV文件

[英]How to export JFreeChart Data to csv file

我已经使用Java SwingJFreeChart在我们正在设计的工具中绘制图形。 现在我想将图形数据导出到CSV文件。( 说在图形上单击鼠标右键,它应该提供导出到CSV的选项,并且在选择它之后,应该在某个随机位置创建一个csv文件并将图形数据保存到其中 )。

这里的重点是如何将数据从图形保存到CSV中。 我需要使用Java SwingJFreeChart来实现这一点。

尝试使用此:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM