diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart02.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart02.java index b9db53f76153a9632368e7de0663d63d2e54a8a7..7774cc2a76b4dc36f211f0ad83a93c10f42dfe84 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart02.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/bar/BarChart02.java @@ -78,6 +78,7 @@ public class BarChart02 implements ExampleChart { Series series = chart.addSeries("Model 77", xData, yData); series.setLineColor(SeriesColor.RED); chart.getStyleManager().setPlotGridLinesVisible(false); + chart.getStyleManager().setBarFilled(false); return chart; } diff --git a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java index f0bfe4fcb890e53accead2116ae585aa70ba7d0b..fb4d87a216127a4db2afee67441546d47c85a67f 100644 --- a/xchart/src/main/java/com/xeiam/xchart/StyleManager.java +++ b/xchart/src/main/java/com/xeiam/xchart/StyleManager.java @@ -136,6 +136,7 @@ public class StyleManager { // Bar Charts /////////////////////////////// private double barWidthPercentage; private boolean isBarsOverlapped; + private boolean isBarFilled; // Line, Scatter, Area Charts /////////////////////////////// private int markerSize; @@ -222,6 +223,7 @@ public class StyleManager { // Bar Charts /////////////////////////////// barWidthPercentage = theme.getBarWidthPercentage(); isBarsOverlapped = theme.isBarsOverlapped(); + isBarFilled = theme.isBarFilled(); // Line, Scatter, Area Charts /////////////////////////////// @@ -1041,6 +1043,21 @@ public class StyleManager { return isBarsOverlapped; } + /** + * set whether or no bars are filled with a solid color or empty. + * + * @param isBarFilled + */ + public void setBarFilled(boolean isBarFilled) { + + this.isBarFilled = isBarFilled; + } + + public boolean isBarFilled() { + + return isBarFilled; + } + // Line, Scatter, Area Charts /////////////////////////////// /** diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java index 9916e4714bc640e332053773f04841cee102c20a..9a7dab23ef212cc5a72650c8234c95cd02af52db 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContentBarChart.java @@ -32,7 +32,7 @@ public class PlotContentBarChart extends PlotContent { /** * Constructor - * + * * @param plot */ protected PlotContentBarChart(Plot plot) { @@ -190,7 +190,13 @@ public class PlotContentBarChart extends PlotContent { path.lineTo(xOffset + barWidth, zeroOffset); path.lineTo(xOffset, zeroOffset); path.closePath(); - g.fill(path); + g.setStroke(series.getStroke()); + if (getChartPainter().getStyleManager().isBarFilled()) { + g.fill(path); + } + else { + g.draw(path); + } } seriesCounter++; diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java index 3ccbfcbfca171db5abd305c92afb33152cfbba5f..cb95e1a152c682e18a20a878c421f530bba5d3b1 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/GGPlot2Theme.java @@ -293,6 +293,12 @@ public class GGPlot2Theme implements Theme { return false; } + @Override + public boolean isBarFilled() { + + return true; + } + // Line, Scatter, Area Charts /////////////////////////////// @Override diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java index d329e10e561c5f6353ff8a22017bef405adb2683..5756a29d8c8c1e3a7b762c82aa923be4f6d6ed2f 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/MatlabTheme.java @@ -294,6 +294,12 @@ public class MatlabTheme implements Theme { return false; } + @Override + public boolean isBarFilled() { + + return true; + } + // Line, Scatter, Area Charts /////////////////////////////// @Override diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java index d67e64250ef3859ac47707a9c189809479227cf3..4ca1c5ddeded2e45e890774bfecbe23aaa926f6e 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/Theme.java @@ -122,6 +122,8 @@ public interface Theme { public boolean isBarsOverlapped(); + public boolean isBarFilled(); + // Line, Scatter, Area Charts /////////////////////////////// public int getMarkerSize(); diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java index bd292dd16924083a235c7aaa69df0b38c8b9b1bc..1a4cf322ff39347c42aff54fb3c640f39f5c8d05 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/style/XChartTheme.java @@ -293,6 +293,12 @@ public class XChartTheme implements Theme { return false; } + @Override + public boolean isBarFilled() { + + return true; + } + // Line, Scatter, Area Charts /////////////////////////////// @Override