diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/standalone/Example1.java b/xchart-demo/src/main/java/com/xeiam/xchart/standalone/Example1.java index 75dbf9e08e471987e7a54e2a5ae6950caf060ab5..e88d391b52c9461449f29fc49e3f353517c2e878 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/standalone/Example1.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/standalone/Example1.java @@ -17,6 +17,8 @@ package com.xeiam.xchart.standalone; import com.xeiam.xchart.BitmapEncoder; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.Series; +import com.xeiam.xchart.SeriesMarker; /** * Creates a simple Chart and saves it as a PNG and JPEG image file. @@ -32,7 +34,8 @@ public class Example1 { chart.setChartTitle("Sample Chart"); chart.setXAxisTitle("X"); chart.setYAxisTitle("Y"); - chart.addSeries("y(x)", null, yData); + Series series = chart.addSeries("y(x)", null, yData); + series.setMarker(SeriesMarker.CIRCLE); BitmapEncoder.savePNG(chart, "./Sample_Chart.png"); BitmapEncoder.savePNGWithDPI(chart, "./Sample_Chart_300_DPI.png", 300); diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Circle.java b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Circle.java index e146f43a1aa5dfc285bf051f7f1c27a761502ce7..c41ad4f5895a48f4c88635612bce0c670d86118d 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Circle.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Circle.java @@ -28,7 +28,7 @@ public class Circle extends Marker { public void paint(Graphics2D g, double xOffset, double yOffset) { g.setStroke(stroke); - Shape circle = new Ellipse2D.Double(xOffset + Marker.X_OFFSET, yOffset + Marker.Y_OFFSET, Marker.SIZE, Marker.SIZE); + Shape circle = new Ellipse2D.Double(xOffset - Marker.HALF_SIZE, yOffset - Marker.HALF_SIZE, Marker.SIZE, Marker.SIZE); g.fill(circle); } diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Diamond.java b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Diamond.java index 5fb4cb1f45dc3ba0f2916933f4d826e88413a042..efa7298c46befd4ff8cb869eaa8127e7bd1bb9be 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Diamond.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Diamond.java @@ -29,13 +29,13 @@ public class Diamond extends Marker { g.setStroke(stroke); // Make a diamond - double halfSize = Math.ceil((Marker.SIZE + 3) / 2.0); + double diamondHalfSize = Marker.HALF_SIZE * 1.3; Path2D.Double path = new Path2D.Double(); - path.moveTo(xOffset - halfSize, yOffset - halfSize + halfSize); - path.lineTo(xOffset - halfSize + halfSize, yOffset - halfSize + Marker.SIZE + 3); - path.lineTo(xOffset - halfSize + Marker.SIZE + 3, yOffset - halfSize + halfSize); - path.lineTo(xOffset - halfSize + halfSize, yOffset - halfSize); + path.moveTo(xOffset - diamondHalfSize, yOffset); + path.lineTo(xOffset, yOffset - diamondHalfSize); + path.lineTo(xOffset + diamondHalfSize, yOffset); + path.lineTo(xOffset, yOffset + diamondHalfSize); path.closePath(); g.fill(path); diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Marker.java b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Marker.java index 05bd0edb2581d0162e0cac75a0ed5fbe7dd8e8ad..930894be41e2d46512f94b24e5adf0de9629aff6 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Marker.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Marker.java @@ -27,8 +27,7 @@ public abstract class Marker { public static final double SIZE = 8; - public static final double X_OFFSET = -1.0 * (SIZE / 2.0); - public static final double Y_OFFSET = -1.0 * (SIZE / 2.0); + public static final double HALF_SIZE = SIZE / 2.0; public abstract void paint(Graphics2D g, double xOffset, double yOffset); } diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Square.java b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Square.java index 84dbc41d69494602c1ba0dac4d3f96fc916c1213..ba506d6b946d3c96e73fd9d14932ab71c6af4d88 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/markers/Square.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/markers/Square.java @@ -28,7 +28,7 @@ public class Square extends Marker { public void paint(Graphics2D g, double xOffset, double yOffset) { g.setStroke(stroke); - Shape square = new Rectangle2D.Double(xOffset + Marker.X_OFFSET, yOffset + Marker.Y_OFFSET, Marker.SIZE, Marker.SIZE); + Shape square = new Rectangle2D.Double(xOffset - Marker.HALF_SIZE, yOffset - Marker.HALF_SIZE, Marker.SIZE, Marker.SIZE); g.fill(square); } diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleDown.java b/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleDown.java index 3a0e05378064caf087ad4c1433053528dcc1af64..88adbb0413c47a5f7550d4ded03e68f315cfa060 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleDown.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleDown.java @@ -29,12 +29,10 @@ public class TriangleDown extends Marker { g.setStroke(stroke); // Make a triangle - double halfSize = Math.ceil((Marker.SIZE + 1) / 2.0); - Path2D.Double path = new Path2D.Double(); - path.moveTo(xOffset - halfSize + 0, 1 + yOffset - halfSize + 0); - path.lineTo(xOffset - halfSize + halfSize, 1 + yOffset - halfSize + Marker.SIZE + 1); - path.lineTo(xOffset - halfSize + Marker.SIZE + 1, 1 + yOffset - halfSize + 0); + path.moveTo(xOffset - Marker.HALF_SIZE, 1 + yOffset - Marker.HALF_SIZE); + path.lineTo(xOffset, 1 + yOffset - Marker.HALF_SIZE + Marker.SIZE + 1); + path.lineTo(xOffset - Marker.HALF_SIZE + Marker.SIZE + 1, 1 + yOffset - Marker.HALF_SIZE); path.closePath(); g.fill(path); diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleUp.java b/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleUp.java index 21d8358c2e4cb7d17d1fc4921b4e54e7cd490f4a..add968f407ee79036769b588936335bbdfed0907 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleUp.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/markers/TriangleUp.java @@ -29,12 +29,10 @@ public class TriangleUp extends Marker { g.setStroke(stroke); // Make a triangle - double halfSize = Math.ceil((Marker.SIZE + 1) / 2.0); - Path2D.Double path = new Path2D.Double(); - path.moveTo(xOffset - halfSize, yOffset - halfSize + Marker.SIZE + 1); - path.lineTo(xOffset - halfSize + Marker.SIZE + 1, yOffset - halfSize + Marker.SIZE + 1); - path.lineTo(xOffset - halfSize + halfSize, yOffset - halfSize + 0); + path.moveTo(xOffset - Marker.HALF_SIZE, yOffset - Marker.HALF_SIZE + Marker.SIZE + 1); + path.lineTo(xOffset - Marker.HALF_SIZE + Marker.SIZE + 1, yOffset - Marker.HALF_SIZE + Marker.SIZE + 1); + path.lineTo(xOffset, yOffset - Marker.HALF_SIZE); path.closePath(); g.fill(path);