Mercurial > hg > may
view yetilab/plot/plot.yeti @ 178:032c4986b6b0
Implement and test matrix concat
author | Chris Cannam |
---|---|
date | Thu, 02 May 2013 21:58:58 +0100 |
parents | d9308083df77 |
children | 67ff37b03856 |
line wrap: on
line source
module yetilab.plot.plot; import org.jzy3d.plot3d.builder: Mapper; import org.jzy3d.maths: Range, Coord3d; import org.jzy3d.chart: Chart, ChartLauncher; import org.jzy3d.plot3d.builder: Builder; import org.jzy3d.plot3d.builder.concrete: OrthonormalGrid; import org.jzy3d.colors.colormaps: ColorMapRainbow; import org.jzy3d.colors: ColorMapper, Color; import org.jzy3d.plot3d.rendering.canvas: Quality; import org.jzy3d.plot3d.rendering.view.modes: ViewPositionMode; import org.jzy3d.plot3d.primitives: FlatLine2d, Point; newMatrixMapper matrix = (class MMapper extends Mapper double f(double x, double y) result = matrix.getAt y x; println "f(\(x),\(y)) -> \(result)"; result end; new MMapper()); newMatrixLogMapper matrix = (class MMapper extends Mapper double f(double x, double y) ln (matrix.getAt y x) end; new MMapper()); newMapper mapFunction = (class FMapper extends Mapper double f(double x, double y) mapFunction x y end; new FMapper()); plotMatrix chart matrix is ~Chart -> 'a -> () = (mapper = newMatrixMapper matrix; size = matrix.size; xrange = new Range(0, size.columns - 1); yrange = new Range(0, size.rows - 1); grid = new OrthonormalGrid(xrange, size.columns, yrange, size.rows); println "Matrix size: \(size)"; surface = Builder#buildOrthonormal(grid, mapper); //??? big? println "Z Bounds: \(surface#getBounds()#getZmin()) -> \(surface#getBounds()#getZmax())"; surface#setFaceDisplayed(true); surface#setWireframeDisplayed(true); surface#setWireframeColor(Color#BLACK); chart#getScene()#getGraph()#add(surface); ()); plotCurve chart curve is ~Chart -> 'a -> () = (scene = chart#getScene(); xx = map (.time) curve; yy = map (.value) curve; line = new FlatLine2d(xx as ~float[], yy as ~float[], 1); line#setWireframeDisplayed(true); line#setWireframeColor(Color#BLACK); line#setWireframeWidth(2); line#setFaceDisplayed(false); scene#add(line); chart#getView()#setViewPoint(new Coord3d(0, 0, 0)); /* axes = chart#getAxeLayout(); axes#setXAxeLabelDisplayed(false); axes#setYAxeLabelDisplayed(false); axes#setZAxeLabelDisplayed(true); axes#setZAxeLabel("unit goes here"); //!!! axes#setYTickLabelDisplayed(false); */ ()); plotSeries chart { start, step, values } is ~Chart -> 'a -> () = (scene = chart#getScene(); xx = map do i: start + step * i done [0..length values - 1]; yy = list values; line = new FlatLine2d(xx as ~float[], yy as ~float[], 0); line#setWireframeDisplayed(true); line#setWireframeColor(Color#BLACK); line#setWireframeWidth(2); line#setFaceDisplayed(false); scene#add(line); chart#getView()#setViewPoint(new Coord3d(0, 0, 0)); /* axes = chart#getAxeLayout(); axes#setXAxeLabelDisplayed(false); axes#setYAxeLabelDisplayed(false); axes#setZAxeLabelDisplayed(true); axes#setZAxeLabel("unit goes here"); //!!! axes#setYTickLabelDisplayed(false); */ ()); plot structures = (chart = new Chart(Quality#Nicest); for structures \case of Grid matrix: plotMatrix chart matrix; Curve curve: plotCurve chart curve; Series series: plotSeries chart series; other: failWith "Unable to plot \(other)"; esac; ChartLauncher#openChart(chart); chart); { newMatrixMapper, newMatrixLogMapper, newMapper, plotMatrix, plotCurve, plotSeries, plot, }