diff --git a/jplotter/src/main/java/hageldave/jplotter/renderers/CoordSysRenderer.java b/jplotter/src/main/java/hageldave/jplotter/renderers/CoordSysRenderer.java index 35ed3aed..75ea73ab 100644 --- a/jplotter/src/main/java/hageldave/jplotter/renderers/CoordSysRenderer.java +++ b/jplotter/src/main/java/hageldave/jplotter/renderers/CoordSysRenderer.java @@ -108,7 +108,8 @@ public class CoordSysRenderer implements Renderer { protected Rectangle2D coordinateView = new Rectangle2D.Double(-1,-1,2,2); - protected TickMarkGenerator tickMarkGenerator = new ExtendedWilkinson(); + protected TickMarkGenerator tickMarkGeneratorX = new ExtendedWilkinson(); + protected TickMarkGenerator tickMarkGeneratorY = tickMarkGeneratorX; protected Lines axes = new Lines().setVertexRoundingEnabled(true); protected Lines ticks = new Lines().setVertexRoundingEnabled(true); @@ -477,12 +478,12 @@ public int getLegendBottomHeight() { * */ protected void setupAndLayout() { - Pair xticksAndLabels = tickMarkGenerator.genTicksAndLabels( + Pair xticksAndLabels = tickMarkGeneratorX.genTicksAndLabels( coordinateView.getMinX(), coordinateView.getMaxX(), 5, false); - Pair yticksAndLabels = tickMarkGenerator.genTicksAndLabels( + Pair yticksAndLabels = tickMarkGeneratorY.genTicksAndLabels( coordinateView.getMinY(), coordinateView.getMaxY(), 5, @@ -656,23 +657,61 @@ public CoordSysRenderer setyAxisLabel(String yAxisLabel) { /** * @return the current {@link TickMarkGenerator} which is {@link ExtendedWilkinson} by default. */ - public TickMarkGenerator getTickMarkGenerator() { - return tickMarkGenerator; + public TickMarkGenerator getTickMarkGeneratorX() { + return tickMarkGeneratorX; + } + + /** + * @return the current {@link TickMarkGenerator} which is {@link ExtendedWilkinson} by default. + */ + public TickMarkGenerator getTickMarkGeneratorY() { + return tickMarkGeneratorX; } /** * Sets the specified {@link TickMarkGenerator} for this {@link CoordSysRenderer}. + * This sets the same generator for x- and y-axis. * Sets the {@link #isDirty} state of this {@link CoordSysRenderer} to true. * @param tickMarkGenerator to be used for determining tick locations * and corresponding labels * @return this for chaining */ public CoordSysRenderer setTickMarkGenerator(TickMarkGenerator tickMarkGenerator) { - this.tickMarkGenerator = tickMarkGenerator; + this.tickMarkGeneratorX = this.tickMarkGeneratorY = tickMarkGenerator; + setDirty(); + return this; + } + + /** + * Sets the specified {@link TickMarkGenerator} for the x-axis of this {@link CoordSysRenderer}. + * Sets the {@link #isDirty} state of this {@link CoordSysRenderer} to true. + * @param tickMarkGenerator to be used for determining tick locations + * and corresponding labels + * @return this for chaining + */ + public CoordSysRenderer setTickMarkGeneratorX(TickMarkGenerator tickMarkGenerator) { + this.tickMarkGeneratorX = tickMarkGenerator; setDirty(); return this; } + /** + * Sets the specified {@link TickMarkGenerator} for the y-axis of this {@link CoordSysRenderer}. + * Sets the {@link #isDirty} state of this {@link CoordSysRenderer} to true. + * @param tickMarkGenerator to be used for determining tick locations + * and corresponding labels + * @return this for chaining + */ + public CoordSysRenderer setTickMarkGeneratorY(TickMarkGenerator tickMarkGenerator) { + this.tickMarkGeneratorY = tickMarkGenerator; + setDirty(); + return this; + } + + + + + @Override public void glInit() { preContentLinesR.glInit(); diff --git a/jplotter/src/test/java/hageldave/jplotter/howto/BarChartDemo.java b/jplotter/src/test/java/hageldave/jplotter/howto/BarChartDemo.java index 83c5059b..66109373 100644 --- a/jplotter/src/test/java/hageldave/jplotter/howto/BarChartDemo.java +++ b/jplotter/src/test/java/hageldave/jplotter/howto/BarChartDemo.java @@ -53,11 +53,7 @@ public static void oldWay() { // set the content renderer of the coordinate system coordsys.setContent(barRenderer); // we need to change the tick marks labeling for the y axis - TickMarkGenerator oldTickGen = coordsys.getTickMarkGenerator(); - coordsys.setTickMarkGenerator((min,max,desired,vert)->{ - if(!vert){ - return oldTickGen.genTicksAndLabels(min,max,desired,vert); - } + coordsys.setTickMarkGeneratorY((min,max,desired,vert)->{ // make ticks at integer values (0,1,2,...) double[] ticks = IntStream.range(0, cases.length) .mapToDouble(i -> (double)i)