Mercurial > hg > may
changeset 136:1101ecb57e47
Backed out changeset b1968c825a53
Horizontal bar chart doesn't work any better for us than vertical, and this polygon structure doesn't seem to render as cleanly
author | Chris Cannam |
---|---|
date | Tue, 23 Apr 2013 13:51:12 +0100 |
parents | b1968c825a53 |
children | b28512329efc |
files | yetilab/plot/plot.yeti |
diffstat | 1 files changed, 27 insertions(+), 60 deletions(-) [+] |
line wrap: on
line diff
--- a/yetilab/plot/plot.yeti Tue Apr 23 12:54:43 2013 +0100 +++ b/yetilab/plot/plot.yeti Tue Apr 23 13:51:12 2013 +0100 @@ -2,7 +2,6 @@ import org.jzy3d.plot3d.builder: Mapper; import org.jzy3d.plot3d.text.drawable: DrawableTextBillboard, DrawableTextBitmap; -import org.jzy3d.plot3d.text.renderers.jogl: JOGLTextRenderer; 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; @@ -72,8 +71,7 @@ var animated = false, var normalised = false, var unit = "", - var xkeys = array (sort defaultXKeys), - var horizontal = false, + var xkeys = array (sort defaultXKeys) }; for options \case of @@ -83,7 +81,6 @@ Normalised n: parsed.normalised := n; Unit u: parsed.unit := u; Labels ll: parsed.labels := ll; - Horizontal h: parsed.horizontal := h; esac; if empty? parsed.labels then parsed.labels := mapIntoHash id id parsed.keys @@ -108,30 +105,6 @@ ChartLauncher#openChart(chart); ()); -newRect x y0 y1 z colour is number -> number -> number -> number -> ~Color -> 'a = - (poly = new Quad(); - poly#add(new Point(new Coord3d(x + 0.5, z, y0))); - poly#add(new Point(new Coord3d(x + 0.5, z, y1))); - poly#add(new Point(new Coord3d(x - 0.5, z, y1))); - poly#add(new Point(new Coord3d(x - 0.5, z, y0))); - poly#setWireframeDisplayed(true); - poly#setWireframeColor(colour); - poly#setFaceDisplayed(true); - poly#setColor(colour); - poly); - -newProjectedRect x y0 y1 z colour is number -> number -> number -> number -> ~Color -> 'a = - (poly = new Quad(); - poly#add(new Point(new Coord3d(x + 0.5, y0, z))); - poly#add(new Point(new Coord3d(x + 0.5, y1, z))); - poly#add(new Point(new Coord3d(x - 0.5, y1, z))); - poly#add(new Point(new Coord3d(x - 0.5, y0, z))); - poly#setWireframeDisplayed(true); - poly#setWireframeColor(colour); - poly#setFaceDisplayed(true); - poly#setColor(colour); - poly); - plotBarChart options values = (opts = parseOptions options (keys values) []; quality = Quality#Fastest; @@ -145,49 +118,31 @@ var x = n - i - 1; total = sum (map do k: if k in values then values[k] else 0 fi done opts.keys); for opts.keys do k: + bar = new HistogramBar(); v = if k in values then values[k] else 0 fi; v = if opts.normalised and total > 0 then v / total else v fi; - c = chartColour i; - scene#add(newRect x 0 v 1 c); - scene#add(newProjectedRect x 0 v 1 c); + bar#setData(new Coord3d(x, 0, 0), v, 0.45, chartColour i); + bar#setWireframeDisplayed(false); + scene#add(bar); ticks[i] := i; tickLabels#register(x, opts.labels[k]); i := i + 1; x := x - 1; done; - if opts.horizontal then - chart#getView()#setViewPoint(new Coord3d(0, pi/2, 0)); + chart#getView()#setViewPoint(new Coord3d(pi/2, 0, 0)); + axes = chart#getAxeLayout(); + axes#setXAxeLabelDisplayed(false); + axes#setYAxeLabelDisplayed(false); + axes#setZAxeLabelDisplayed(true); + if opts.normalised then + axes#setZAxeLabel(""); + axes#setZTickRenderer(newPercentTickRenderer ()); else - chart#getView()#setViewPoint(new Coord3d(pi/2, 0, 0)); + axes#setZAxeLabel(opts.unit); fi; - - axes = chart#getAxeLayout(); - if opts.horizontal then - axes#setZAxeLabelDisplayed(false); - axes#setZTickLabelDisplayed(false); - axes#setYAxeLabelDisplayed(true); - if opts.normalised then - axes#setYAxeLabel(""); - axes#setYTickRenderer(newPercentTickRenderer ()); - else - axes#setYAxeLabel(opts.unit); - fi; - else - axes#setYAxeLabelDisplayed(false); - axes#setYTickLabelDisplayed(false); - axes#setZAxeLabelDisplayed(true); - if opts.normalised then - axes#setZAxeLabel(""); - axes#setZTickRenderer(newPercentTickRenderer ()); - else - axes#setZAxeLabel(opts.unit); - fi; - fi; - - axes#setXAxeLabelDisplayed(false); axes#setXTickProvider(new StaticTickProvider(ticks)); axes#setXTickRenderer(tickLabels); - + axes#setYTickLabelDisplayed(false); ChartLauncher#openChart(chart); ()); @@ -246,6 +201,18 @@ done; stacked); +newRect x y0 y1 z colour is number -> number -> number -> number -> ~Color -> 'a = + (poly = new Quad(); + poly#add(new Point(new Coord3d(x + 0.5, z, y0))); + poly#add(new Point(new Coord3d(x + 0.5, z, y1))); + poly#add(new Point(new Coord3d(x - 0.5, z, y1))); + poly#add(new Point(new Coord3d(x - 0.5, z, y0))); + poly#setWireframeDisplayed(true); + poly#setWireframeColor(colour); + poly#setFaceDisplayed(true); + poly#setColor(colour); + poly); + plotStacked options values = (opts = parseOptions options (keys values) (keys values[head (keys values)]); quality = Quality#Fastest;