diff yetilab/plot/plot.yeti @ 140:10463070bab4

Attempt (not apparently working) at adjusting tick alignment
author Chris Cannam
date Wed, 24 Apr 2013 15:19:17 +0100
parents e95b474a42c3
children 9852a273e559
line wrap: on
line diff
--- a/yetilab/plot/plot.yeti	Wed Apr 24 10:08:22 2013 +0100
+++ b/yetilab/plot/plot.yeti	Wed Apr 24 15:19:17 2013 +0100
@@ -5,7 +5,7 @@
 import org.jzy3d.maths: Range, Coord3d;
 import org.jzy3d.plot3d.primitives: Shape, HistogramBar, FlatLine2d, Polygon, Quad, Point;
 import org.jzy3d.plot3d.primitives.axes.layout.providers: StaticTickProvider, RegularTickProvider;
-import org.jzy3d.plot3d.primitives.axes.layout.renderers: ITickRenderer, TickLabelMap;
+import org.jzy3d.plot3d.primitives.axes.layout.renderers: ITickRenderer, TickLabelMap, IntegerTickRenderer;
 import org.jzy3d.chart: Chart, ChartLauncher;
 import org.jzy3d.plot3d.builder: Builder;
 import org.jzy3d.plot3d.builder.concrete: OrthonormalGrid;
@@ -68,6 +68,14 @@
     end;
     new PercentageTickRenderer());
 
+newPaddedIntTickRenderer () =
+   (f v = "    \(int (v + 0.5))";
+    class PaddedIntTickRenderer extends ITickRenderer
+        String format(double value) f value,
+        String format(float value) f value
+    end;
+    new PaddedIntTickRenderer());
+
 parseOptions options defaultKeys defaultXKeys =
    (parsed = {
         var keys = array (sort defaultKeys),
@@ -205,7 +213,10 @@
 stack keys xkeys values normalised =
    (stacked = mapIntoHash id \(mapIntoHash id \{ y0 = 0, y1 = 0 } xkeys) keys;
     prev = mapIntoHash id \0 xkeys;
-    valueOf k xk = if xk in values[k] then values[k][xk] else 0 fi;
+    valueOf k xk =
+        if k in values and xk in values[k] 
+        then values[k][xk] else 0 
+        fi;
     for xkeys do xk:
         total = sum (map do k: valueOf k xk done keys);
         for keys do k:
@@ -275,6 +286,7 @@
         axes#setZTickRenderer(newPercentTickRenderer ());
     else
         axes#setZAxeLabel(opts.unit);
+        axes#setZTickRenderer(newPaddedIntTickRenderer ());
     fi;
     axes#setYTickLabelDisplayed(false);
     showChart opts chart);