/** * Set up the min/max of the axes based on the data. */ protected void validateData() { if( this.autoScaleAxes && this.data.size() > 0 ) { double minX = Double.MAX_VALUE; double maxX = -Double.MAX_VALUE; double minY = Double.MAX_VALUE; double maxY = -Double.MAX_VALUE; for( final LocatedObject<O> o : this.data) { minX = Math.min( minX, o.x ); maxX = Math.max( maxX, o.x ); minY = Math.min( minY, o.y ); maxY = Math.max( maxY, o.y ); } this.axesRenderer2D.setMaxXValue( maxX ); this.axesRenderer2D.setMinXValue( minX ); this.axesRenderer2D.setMaxYValue( maxY ); this.axesRenderer2D.setMinYValue( minY ); this.axesRenderer2D.precalc(); // System.out.println( "XYPlotVis.validateData(): max x: "+maxX+ // ", min x: "+minX+", max y: "+maxY+", min y: "+minY ); } }
/** * Main method to demonstrate the vis. * @param args command-line args (not used) */ public static void main( final String[] args ) { final DotPlotVisualisation dpv = new DotPlotVisualisation( 1000, 600 ); dpv.axesRenderer2D.setMaxXValue( 1 ); dpv.axesRenderer2D.setMinXValue( -1 ); dpv.axesRenderer2D.setMaxYValue( 1 ); dpv.axesRenderer2D.setMinYValue( -1 ); dpv.axesRenderer2D.setxMajorTickSpacing( 0.2 ); dpv.axesRenderer2D.setxMinorTickSpacing( 0.1 ); dpv.axesRenderer2D.setyMajorTickSpacing( 0.2 ); dpv.axesRenderer2D.setyMinorTickSpacing( 0.1 ); dpv.axesRenderer2D.setxAxisPosition( 300 ); dpv.setAutoScaleAxes( false ); dpv.setColourMapRange( 0, 0.2 ); for( int i = 0; i < 10; i++ ) dpv.addPoint( (Math.random()-0.5)*2, (Math.random()-0.5)*2, i/50d ); dpv.updateVis(); dpv.showWindow( "Dot plot" ); } }
/** * {@inheritDoc} * @see org.openimaj.vis.general.XYPlotVisualisation#beforeAxesRender(org.openimaj.image.MBFImage, org.openimaj.vis.general.AxesRenderer2D) */ @Override public void beforeAxesRender( final MBFImage visImage, final AxesRenderer2D<Float[],MBFImage> renderer ) { int maxBand = 1; for( final XYPlotVisualisation.LocatedObject<O> s : this.data ) maxBand = Math.max( maxBand, (int)s.y ); renderer.setMaxYValue( maxBand ); renderer.setImage( visImage ); renderer.precalc( ); final Float[][] cols = new Float[][]{ {0.4f,0.4f,0.4f}, {0.3f,0.3f,0.3f} }; for( int b = 1; b <= maxBand; b++ ) { final int topOfBand = (int)renderer.calculatePosition( 0, b ).getY(); final int bottomOfBand = (int)renderer.calculatePosition( 0, b-1 ).getY(); visImage.createRenderer().drawShapeFilled( new Rectangle( 0, topOfBand, visImage.getWidth(), bottomOfBand-topOfBand ), cols[b%2] ); if( b == 1 ) this.bandSizeKnown( bottomOfBand - topOfBand ); } }
super.axesRenderer2D.setMaxXValue(xmax); super.axesRenderer2D.setMinYValue(ymin); super.axesRenderer2D.setMaxYValue(ymax); super.axesRenderer2D.setAxisPaddingLeft(50); super.axesRenderer2D.setAxisPaddingBottom(50);
ar.setMaxXValue( 1 ); ar.setMinYValue( -5 ); ar.setMaxYValue( 1 ); ar.setDrawYAxis( true ); ar.setDrawXAxis( true );