public void replot ( ) { width = co . size ( ) ; height = ( int ) Math . ceil ( width * .2 ) ; ratio = width / ( double ) height ; height = height < MIN_HEIGHT ? MIN_HEIGHT : height > MAX_HEIGHT ? MAX_HEIGHT : height ; if ( scale == null ) { scale = computeScale ( co ) ; } BufferedImage img = new BufferedImage ( width , height , BufferedImage . TYPE_INT_ARGB ) ; int x = 0 ; for ( DBIDIter it = co . iter ( ) ; it . valid ( ) ; it . advance ( ) ) { double reach = co . getReachability ( it ) ; final int y = scaleToPixel ( reach ) ; try { int col = colors . getColorForDBID ( it ) ; for ( int y2 = height - 1 ; y2 >= y ; y2 -- ) { img . setRGB ( x , y2 , col ) ; } } catch ( ArrayIndexOutOfBoundsException e ) { LOG . error ( "Plotting out of range: " + x + "," + y + " >= " + width + "x" + height ) ; } x ++ ; } plot = img ; }
Trigger a redraw of the OPTICS plot