diff --git a/xchart-demo/CSV/CSVChartColumns/series1.csv b/xchart-demo/CSV/CSVChartColumns/series1.csv index e7ff3f302dafb1aca4619214961dee277b2c08ea..9c886265e3d09d213186f046254e3929196a2a63 100644 --- a/xchart-demo/CSV/CSVChartColumns/series1.csv +++ b/xchart-demo/CSV/CSVChartColumns/series1.csv @@ -1,3 +1,3 @@ -1,12 -2,34 -3,56 \ No newline at end of file +1,12,4 +2,34,12 +3,56,21 \ No newline at end of file diff --git a/xchart-demo/CSV/CSVChartColumnsExport/series1.csv b/xchart-demo/CSV/CSVChartColumnsExport/series1.csv index d530da1ca6adc5c87c6680baaf170ef68e0e66b2..73e712d7e7ed294bfe9971a71df06996bb8019d5 100644 --- a/xchart-demo/CSV/CSVChartColumnsExport/series1.csv +++ b/xchart-demo/CSV/CSVChartColumnsExport/series1.csv @@ -1,3 +1,3 @@ -1,12 -2,34 -3,56 +1,12,4, +2,34,12, +3,56,21, diff --git a/xchart-demo/CSV/CSVChartRows/series1.csv b/xchart-demo/CSV/CSVChartRows/series1.csv index f53406c009686c23a3570c23fbed805de0d8b375..c77030a194f340d8cd74525c95e685e8e240083a 100644 --- a/xchart-demo/CSV/CSVChartRows/series1.csv +++ b/xchart-demo/CSV/CSVChartRows/series1.csv @@ -1,2 +1,3 @@ 1,2,3 12,34,56 +4,12,21 \ No newline at end of file diff --git a/xchart-demo/CSV/CSVChartRowsExport/series1.csv b/xchart-demo/CSV/CSVChartRowsExport/series1.csv index f53406c009686c23a3570c23fbed805de0d8b375..7a37b37bfa0abfd5f6ac1b8e3e743207628f1238 100644 --- a/xchart-demo/CSV/CSVChartRowsExport/series1.csv +++ b/xchart-demo/CSV/CSVChartRowsExport/series1.csv @@ -1,2 +1,3 @@ 1,2,3 12,34,56 +4,12,21 diff --git a/xchart/src/main/java/com/xeiam/xchart/CSVExporter.java b/xchart/src/main/java/com/xeiam/xchart/CSVExporter.java index d29c1fb23ab164b605dc4191e3b6e1bca1194695..463f7fd9a36f06ff4815c836ccaef66fe0c150b6 100644 --- a/xchart/src/main/java/com/xeiam/xchart/CSVExporter.java +++ b/xchart/src/main/java/com/xeiam/xchart/CSVExporter.java @@ -49,6 +49,10 @@ public class CSVExporter { out.write(csv); csv = join(series.getyData(), ",") + System.getProperty("line.separator"); out.write(csv); + if (series.getErrorBars() != null) { + csv = join(series.getErrorBars(), ",") + System.getProperty("line.separator"); + out.write(csv); + } } catch (Exception e) { e.printStackTrace(); @@ -78,14 +82,32 @@ public class CSVExporter { out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newFile), "UTF8")); Collection<?> xData = series.getxData(); - Collection<?> yData = series.getyData(); + Collection<Number> yData = series.getyData(); + Collection<Number> errorBarData = series.getErrorBars(); Iterator<?> itrx = xData.iterator(); - Iterator<?> itry = yData.iterator(); + Iterator<Number> itry = yData.iterator(); + Iterator<Number> itrErrorBar = null; + if (errorBarData != null) { + itrErrorBar = errorBarData.iterator(); + } while (itrx.hasNext()) { Number xDataPoint = (Number) itrx.next(); - Number yDataPoint = (Number) itry.next(); - String csv = xDataPoint + "," + yDataPoint + System.getProperty("line.separator"); - out.write(csv); + Number yDataPoint = itry.next(); + Number errorBarValue = null; + if (itrErrorBar != null) { + errorBarValue = itrErrorBar.next(); + } + StringBuilder sb = new StringBuilder(); + sb.append(xDataPoint + ","); + sb.append(yDataPoint + ","); + if (errorBarValue != null) { + sb.append(errorBarValue + ","); + } + sb.append(System.getProperty("line.separator")); + + // String csv = xDataPoint + "," + yDataPoint + errorBarValue == null ? "" : ("," + errorBarValue) + System.getProperty("line.separator"); + // String csv = + yDataPoint + System.getProperty("line.separator"); + out.write(sb.toString()); } } catch (Exception e) { diff --git a/xchart/src/main/java/com/xeiam/xchart/CSVImporter.java b/xchart/src/main/java/com/xeiam/xchart/CSVImporter.java index 38804f75122803e15a6888ec79afa5277221f0d5..6f7180252b3911c08e1e03ac4e0aeb3ae0b8aaf3 100644 --- a/xchart/src/main/java/com/xeiam/xchart/CSVImporter.java +++ b/xchart/src/main/java/com/xeiam/xchart/CSVImporter.java @@ -70,7 +70,13 @@ public class CSVImporter { else { xAndYData = getSeriesDataFromCSVColumns(csvFile); } - chart.addSeries(csvFile.getName().substring(0, csvFile.getName().indexOf(".csv")), getAxisData(xAndYData[0]), getAxisData(xAndYData[1])); + + if (xAndYData[2] == null || xAndYData[2].trim().equalsIgnoreCase("")) { + chart.addSeries(csvFile.getName().substring(0, csvFile.getName().indexOf(".csv")), getAxisData(xAndYData[0]), getAxisData(xAndYData[1])); + } + else { + chart.addSeries(csvFile.getName().substring(0, csvFile.getName().indexOf(".csv")), getAxisData(xAndYData[0]), getAxisData(xAndYData[1]), getAxisData(xAndYData[2])); + } } return chart; @@ -96,7 +102,7 @@ public class CSVImporter { */ private static String[] getSeriesDataFromCSVRows(File csvFile) { - String[] xAndYData = new String[2]; + String[] xAndYData = new String[3]; BufferedReader bufferedReader = null; try { @@ -127,9 +133,10 @@ public class CSVImporter { */ private static String[] getSeriesDataFromCSVColumns(File csvFile) { - String[] xAndYData = new String[2]; + String[] xAndYData = new String[3]; xAndYData[0] = ""; xAndYData[1] = ""; + xAndYData[2] = ""; BufferedReader bufferedReader = null; try { @@ -137,8 +144,12 @@ public class CSVImporter { String line = null; bufferedReader = new BufferedReader(new FileReader(csvFile)); while ((line = bufferedReader.readLine()) != null) { - xAndYData[0] += line.split(",")[0] + ","; - xAndYData[1] += line.split(",")[1] + ","; + String[] dataArray = line.split(","); + xAndYData[0] += dataArray[0] + ","; + xAndYData[1] += dataArray[1] + ","; + if (dataArray.length > 2) { + xAndYData[2] += dataArray[2] + ","; + } } } catch (Exception e) { @@ -165,8 +176,13 @@ public class CSVImporter { String[] stringDataArray = stringData.split(","); for (int i = 0; i < stringDataArray.length; i++) { String dataPoint = stringDataArray[i]; - BigDecimal value = new BigDecimal(dataPoint); - axisData.add(value); + try { + BigDecimal value = new BigDecimal(dataPoint); + axisData.add(value); + } catch (NumberFormatException e) { + System.out.println("Error parsing >" + dataPoint + "< !"); + throw (e); + } } return axisData; }