pro image_scale, image, pos_dev, $ minvalue=min, maxvalue=max, maxbyte=maxbyte, $ stitle=stitle, $ scale_pos=scale_pos, no_scale=no_scale, color=color ; Define positional parameters if n_elements(stitle) eq 0 then stitle='' if n_elements(color) eq 0 then color=!p.color s = size(image) if s(0) ne 2 then begin print, 'Input image in routine IMAGE_SCALE is improperly defined.' return endif sx=s(1) sy=s(2) if n_elements(maxbyte) eq 0 then maxbyte=!d.table_size-1 if n_elements(min) eq 0 then min=min(image) if n_elements(max) eq 0 then max=max(image) if n_params() lt 2 then begin pos_dev = [0,0,s(1),s(2)] if !d.name eq 'PS' then pos_dev=pos_dev/500.*10000 endif ;print, max(image, min=m), m xoff=pos_dev(0) yoff=pos_dev(1) xsize=pos_dev(2)-pos_dev(0) ysize=pos_dev(3)-pos_dev(1) mag_x = xsize/float(sx) mag_y = ysize/float(sy) im = byte((maxbyte*float(image-min)/float(max-min))<maxbyte>0) if !d.name eq 'X' then im = congrid(im, xsize, ysize) tv, im, xoff, yoff, xs=xsize, ys=ysize, /dev if keyword_set(no_scale) then return ; Construct Scale if n_elements(scale_pos) eq 0 then scale_pos='r' case scale_pos of 't': begin ; height = (sy/30.) if n_elements(scale) eq 0 then $ scale1 =byte(findgen(sx)/dloat(sx-1)<maxbyte>0) else $ scale1 = congrid(scale, sx) h_dev=(height*float(ysize_dev)/sy)>10. if !d.name eq 'PS' then begin ;xyindex, fltarr(sx, height), xa, ya im1= scale1#replicate(1, sy) endif else begin xyindex, fltarr(xsize_dev, h_dev), xa, ya im1=byte(maxbyte*float(xa)/float(xsize_dev-1)<maxbyte>0) endelse tv, im1, pos_dev(0), pos_dev(3)+h_dev*0.75, $ xs=pos_dev(2)-pos_dev(0)+1, ys=h_dev, /dev for k=0, 5 do begin xyouts, $ pos_dev(0)+xsize_dev/5.*k, pos_dev(3)+h_dev*2., $ strtrim(string((max-min)/5.*k+min, format='(g10.3)'),2) , $ /dev,align=0.5 plots, (pos_dev(0)+xsize_dev/5.*k)*[1,1], $ pos_dev(3)+1+[0.75,1.75]*h_dev, /dev endfor end 'r': begin ; width_dev = round( (xsize < ysize)/30.) if !d.name eq 'PS' then width_dev = width_dev>500 if !d.name eq 'X' then width_dev = width_dev > 10 if xsize le ysize then width = round(width_dev/mag_x) else $ width = round(width_dev/mag_y) im1= round(replicate(1, width) $ #(findgen(sy)/(sy-1)*maxbyte)) if !d.name eq 'X' then im1=congrid(im1, width_dev, ysize) tv, im1, xoff+xsize+width_dev*0.5, yoff, $ xs=width_dev, ys=ysize, /dev plot, [0, 1], [min, max], xst=5, yst=5, /noerase, /nodata,$ pos=[xoff+xsize+width_dev*0.5, yoff, $ xoff+xsize+width_dev*0.5+width_dev, yoff+ysize], /dev axis, yaxis=1, yst=1,yr=[min, max], yminor=1, yticklen=-0.5, /dev, $ color=color, ytitle=stitle plots, (xoff+xsize+width_dev*0.5)*[1,1],yoff+[0, ysize],$ /dev, color=color plots, (xoff+xsize+width_dev*0.5)+[0, width_dev], yoff+[0,0],$ /dev, color=color plots, (xoff+xsize+width_dev*0.5)+[0, width_dev], $ yoff+ysize+[0,0],$ /dev, color=color end endcase end