comparison yetilab/plot/plot.yeti @ 138:f68c92bd2adb

Slightly better text placement
author Chris Cannam
date Tue, 23 Apr 2013 17:01:19 +0100
parents b28512329efc
children e95b474a42c3
comparison
equal deleted inserted replaced
137:b28512329efc 138:f68c92bd2adb
2 2
3 import org.jzy3d.plot3d.builder: Mapper; 3 import org.jzy3d.plot3d.builder: Mapper;
4 import org.jzy3d.plot3d.text.drawable: DrawableTextBillboard, DrawableTextBitmap; 4 import org.jzy3d.plot3d.text.drawable: DrawableTextBillboard, DrawableTextBitmap;
5 import org.jzy3d.maths: Range, Coord3d; 5 import org.jzy3d.maths: Range, Coord3d;
6 import org.jzy3d.plot3d.primitives: Shape, HistogramBar, FlatLine2d, Polygon, Quad, Point; 6 import org.jzy3d.plot3d.primitives: Shape, HistogramBar, FlatLine2d, Polygon, Quad, Point;
7 import org.jzy3d.plot3d.primitives.axes.layout.providers: StaticTickProvider; 7 import org.jzy3d.plot3d.primitives.axes.layout.providers: StaticTickProvider, RegularTickProvider;
8 import org.jzy3d.plot3d.primitives.axes.layout.renderers: ITickRenderer, TickLabelMap; 8 import org.jzy3d.plot3d.primitives.axes.layout.renderers: ITickRenderer, TickLabelMap;
9 import org.jzy3d.chart: Chart, ChartLauncher; 9 import org.jzy3d.chart: Chart, ChartLauncher;
10 import org.jzy3d.plot3d.builder: Builder; 10 import org.jzy3d.plot3d.builder: Builder;
11 import org.jzy3d.plot3d.builder.concrete: OrthonormalGrid; 11 import org.jzy3d.plot3d.builder.concrete: OrthonormalGrid;
12 import org.jzy3d.colors.colormaps: ColorMapRainbow; 12 import org.jzy3d.colors.colormaps: ColorMapRainbow;
238 chart = newChart opts; 238 chart = newChart opts;
239 scene = chart#getScene(); 239 scene = chart#getScene();
240 stacked = stack opts.keys opts.xkeys values opts.normalised; 240 stacked = stack opts.keys opts.xkeys values opts.normalised;
241 var z = 0; 241 var z = 0;
242 var ty = 0; 242 var ty = 0;
243 nxk = length opts.xkeys;
243 xtickLabels = new TickLabelMap(); 244 xtickLabels = new TickLabelMap();
244 for [0..length opts.xkeys - 1] do x: 245 for [0..nxk - 1] do x:
245 xtickLabels#register(x, opts.xkeys[x]); 246 xtickLabels#register(x, opts.xkeys[x]);
246 done; 247 done;
247 for opts.keys do k: 248 for opts.keys do k:
248 ranges = stacked[k]; 249 ranges = stacked[k];
249 c = chartColour z; 250 c = chartColour z;
250 for [0..length opts.xkeys - 1] do x: 251 for [0..nxk - 1] do x:
251 xk = opts.xkeys[x]; 252 xk = opts.xkeys[x];
252 rect = newRect x ranges[xk].y0 ranges[xk].y1 z c; 253 rect = newRect x ranges[xk].y0 ranges[xk].y1 z c;
253 scene#add(rect); 254 scene#add(rect);
254 done; 255 done;
255 text = new DrawableTextBitmap(opts.labels[k], new Coord3d(-5, z, ty), c); 256 text = new DrawableTextBitmap(opts.labels[k], new Coord3d(-(nxk/5 + 0.5), z, ty), c);
256 scene#add(text); 257 scene#add(text);
257 z := z - 1; 258 z := z - 1;
258 ty := ty + 0.1; 259 ty := ty + 0.1;
259 done; 260 done;
260 chart#getView()#setViewPoint(new Coord3d(-pi/2, 0, 0)); 261 chart#getView()#setViewPoint(new Coord3d(-pi/2, 0, 0));
261 axes = chart#getAxeLayout(); 262 axes = chart#getAxeLayout();
262 axes#setXAxeLabelDisplayed(false); 263 axes#setXAxeLabelDisplayed(false);
264 // if nxk < 10 then
265 // axes#setXTickProvider(new RegularTickProvider(nxk + 1));
266 // fi;
263 axes#setXTickRenderer(xtickLabels); 267 axes#setXTickRenderer(xtickLabels);
264 axes#setYAxeLabelDisplayed(false); 268 axes#setYAxeLabelDisplayed(false);
265 axes#setZAxeLabelDisplayed(true); 269 axes#setZAxeLabelDisplayed(true);
266 if opts.normalised then 270 if opts.normalised then
267 axes#setZAxeLabel(""); 271 axes#setZAxeLabel("");