final AxesRenderer2D<Float[],MBFImage> ar = new AxesRenderer2D<Float[],MBFImage>(); ar.setxAxisColour( RGBColour.WHITE ); ar.setyAxisColour( RGBColour.WHITE ); ar.setMajorTickColour( RGBColour.WHITE ); ar.setMinorTickColour( RGBColour.GRAY ); ar.setxTickLabelColour( RGBColour.GRAY ); ar.setyTickLabelColour( RGBColour.GRAY ); ar.setxAxisNameColour( RGBColour.WHITE ); ar.setyAxisNameColour( RGBColour.WHITE ); ar.setxAxisPosition( 100 ); ar.setMinXValue( -1 ); ar.setMaxXValue( 1 ); ar.setMinYValue( -5 ); ar.setMaxYValue( 1 ); ar.setDrawYAxis( true ); ar.setDrawXAxis( true ); ar.setDrawXAxisName( true ); ar.setDrawYAxisName( true ); ar.setDrawXTickLabels( true ); ar.setMinorTickLength( 5 ); ar.setMajorTickLength( 7 ); ar.setMajorTickThickness( 3 ); ar.setMinorTickThickenss( 1 ); ar.setxMinorTickSpacing( 0.2 ); ar.setxMajorTickSpacing( 1 ); ar.setxLabelSpacing( 0.25 );
/** * Initialise */ private void init() { this.axesRenderer2D.setDrawYTicks( false ); this.axesRenderer2D.setDrawYTickLabels( false ); this.axesRenderer2D.setyLabelSpacing( 1 ); this.axesRenderer2D.setMinYValue( 0 ); this.axesRenderer2D.setAxisPaddingBottom( 50 ); this.axesRenderer2D.setyAxisName( "" ); }
/** * {@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 ); } }
this.axesRenderer2D.setAxisPaddingLeft( this.sidebarWidth ); this.axesRenderer2D.setDrawYAxis( false ); this.axesRenderer2D.setDrawXAxisName( false ); this.axesRenderer2D.setMajorTickColour( RGBColour.WHITE ); this.axesRenderer2D.setMinorTickColour( RGBColour.WHITE ); this.axesRenderer2D.setMajorTickColour( RGBColour.WHITE ); this.axesRenderer2D.setMinorTickColour( RGBColour.WHITE ); this.axesRenderer2D.setxAxisNameColour( RGBColour.WHITE ); this.axesRenderer2D.setxTickLabelColour( RGBColour.WHITE ); this.axesRenderer2D.setxAxisColour( RGBColour.WHITE ); this.axesRenderer2D.setxMajorTickSpacing( 10000 ); this.axesRenderer2D.setxMinorTickSpacing( 1000 ); this.axesRenderer2D.setxLabelSpacing( 10000 ); this.axesRenderer2D.setxAxisLabelTransformer( new LabelTransformer() this.axesRenderer2D.precalc( );
this.axesRenderer2D.setImage( this.visImage ); final double xAxisPosition = this.axesRenderer2D.getAxisPaddingTop() + this.axesRenderer2D.getyAxisConfig().getMaxValue() * this.axesRenderer2D.getyAxisRenderer().getAxisLength() / (this.axesRenderer2D.getyAxisConfig().getMaxValue() - this.axesRenderer2D.getyAxisConfig().getMinValue()); this.axesRenderer2D.setxAxisPosition( xAxisPosition ); this.axesRenderer2D.precalc(); if( !this.renderAxesLast ) this.axesRenderer2D.renderAxis( this.visImage ); if( this.renderAxesLast ) this.axesRenderer2D.renderAxis( this.visImage );
wm.getAxesRenderer().setDrawXAxis(false); wm.getAxesRenderer().setDrawYAxis(false);
/** * {@inheritDoc} * @see org.openimaj.vis.general.ItemPlotter#plotObject(org.openimaj.image.Image, org.openimaj.vis.general.XYPlotVisualisation.LocatedObject, org.openimaj.vis.general.AxesRenderer2D) */ @Override public void plotObject( final MBFImage visImage, final XYPlotVisualisation.LocatedObject<ColouredDot> object, final AxesRenderer2D<Float[],MBFImage> renderer ) { // System.out.println( "Object at "+object.x+","+object.y+" is plotted at "+ // renderer.calculatePosition( object.x, object.y ) ); visImage.createRenderer().drawShapeFilled( new Circle( renderer.calculatePosition( object.x, object.y ), (float)(renderer.scaleDimensions( object.object.size, object.object.size )[0] ) ), object.object.colour ); }
/** * Helper function to calulate the render position of a data unit * @param x The data unit x * @param y The data unit y * @return The render position */ public Point2d calculatePosition( final double x, final double y ) { final int[] p = this.calculatePosition( new double[] {x, y} ); return new Point2dImpl( p[0], p[1] ); }
/** * Add an object to a track. * * @param tt The track to add the object to * @param obj The timeline objec to add * @return The timeline track */ public TimelineTrack addTimelineObject( final TimelineTrack tt, final TimelineObject obj ) { super.addObject( tt.getTrackNumber(), obj.getStartTimeMilliseconds(), obj ); if( obj instanceof AnimatedVisualisationProvider ) ((AnimatedVisualisationProvider)obj).addAnimatedVisualisationListener( this ); obj.setDataPixelTransformer( this.axesRenderer2D.getRelativePixelTransformer( (int)this.axesRenderer2D.calculatePosition( obj.getStartTimeMilliseconds(), 0 ).getX(), tt.getTrackNumber() ) ); return tt; }
bv.getAxesRenderer().setDrawYTicks(false);
final int[] p = this.axesRenderer2D.calculatePosition(new double[] { object.x, object.y }); final int[] z = this.axesRenderer2D.calculatePosition(new double[] { object.object.startX, 0 }); final int[] p2 = this.axesRenderer2D.calculatePosition(new double[] { object.object.endX, 0 }); c = this.colourMap.apply((float) (Math.abs(object.y) / this.axesRenderer2D.getMaxYValue())); if (this.useIndividualBarColours) c = object.object.colour;
xLoc[1] = this.getxAxisPosition(); this.xAxisRenderer.precalc(); final Point2d dd = this.calculatePosition( 0, this.yAxisConfig.getMinValue() ); yLoc[0] = dd.getX(); yLoc[1] = dd.getY();
/** * The data range being displayed. * * @return the axisRangeX */ public double getAxisRangeX() { return axesRenderer2D.getxAxisConfig().getMaxValue() - axesRenderer2D.getxAxisConfig().getMinValue(); }
wm.getAxesRenderer().setDrawXAxis(false); wm.getAxesRenderer().setDrawYAxis(false);
Point2d pos = renderer.calculatePosition( object.x, object.y ); (float)(renderer.scaleDimensions( object.object.size, object.object.size )[0] ) ), object.object.colour ); pos = renderer.calculatePosition( object.x + object.object.size, object.y );
@Override public void plotObject( final MBFImage visImage, final LocatedObject<MBFImage> object, final AxesRenderer2D<Float[],MBFImage> renderer ) { final MBFImage thumbnail = object.object.process( new ResizeProcessor( this.thumbnailSize ) ); final Point2d p = renderer.calculatePosition( object.x, object.y ); visImage.createRenderer().drawImage( thumbnail, (int)p.getX(), (int)p.getY() ); }
/** * {@inheritDoc} * @see org.openimaj.vis.general.ItemPlotter#plotObject(org.openimaj.image.Image, org.openimaj.vis.general.XYPlotVisualisation.LocatedObject, org.openimaj.vis.general.AxesRenderer2D) */ @Override public void plotObject( final MBFImage visImage, final org.openimaj.vis.general.XYPlotVisualisation.LocatedObject<TimelineObject> object, final AxesRenderer2D<Float[], MBFImage> renderer ) { // Work out where we're going to plot this timeline object. final Point2d p = renderer.calculatePosition( object.x, object.y ); // Reset its size, if we need to then update the visualisation object.object.setRequiredSize( new Dimension( object.object.getRequiredSize().width, this.bandSize ) ); object.object.updateVis(); // Now get the image and draw it in the correct place. final MBFImage i = object.object.getVisualisationImage(); if( i != null ) visImage.drawImage( i, (int)p.getX(), (int)p.getY() ); }
final Point2d mid = axesRenderer.calculatePosition(0, 0); final Point2d dateLine0 = axesRenderer.calculatePosition(180, 0); final Point2d northPole = axesRenderer.calculatePosition(0, -90);
final Point2d mid = axesRenderer.calculatePosition(0, 0); final Point2d dateLine0 = axesRenderer.calculatePosition(180, 0); final Point2d northPole = axesRenderer.calculatePosition(0, -90); final double scaleX = (dateLine0.getX() - mid.getX()) / 180d; final double scaleY = (northPole.getY() - mid.getY()) / 90d;