Viewing contents of file '../idllib/contrib/esrg_ucsb/hist2d.pro'
pro hist2d,x_variable,y_variable,   $
           tvim=tvim,xtitle=xtitle,ytitle=ytitle,title=title,nlevels=nlevels, $
           follow=follow,c_charsize=c_charsize,ymargin=ymargin,bindim=bindim

;+
; NAME:
;       HIST2D
;
; PURPOSE:
;       Plot a 2-dimensional histogram.
;
; CALLING SEQUENCE:
;       hist2d,x_values,y_values
;
; INPUTS:
;       x_variable     self-explanatory
;       y_variable     self-explanatory
;
; KEYWORD INPUTS:
;       bindim         number of bins on one side
;       tvim           plot image rather than contour
;       xtitle         title for x axis
;       ytitle         title for y axis
;       title          title for plot
;       nlevels        number of levels for contouring
;       follow         keyword to contour to select algorithm allowing labeling
;       c_charsize     contour charsize
;
; OPTIONAL INPUTS:
;
; OUTPUTS:
;
; OPTIONAL OUTPUTS:
;
; EXAMPLE:
;
; PROCEDURE
;
; COMMON BLOCKS:
;       None.
;
; NOTES
;
; REFERENCES
; 
; AUTHOR and DATE:
;     Jeff Hicke     Earth Space Research Group, UCSB  3/15/94
;
; MODIFICATION HISTORY:
;
;-
;

   if (n_elements(title) eq 0) then title = ''
   if (n_elements(xtitle) eq 0) then xtitle = ''
   if (n_elements(ytitle) eq 0) then ytitle = ''
   if (n_elements(nlevels) eq 0) then nlevels = 0
   if (n_elements(c_charsize) eq 0) then c_charsize = 0
   old_ymargin = !y.margin
   if (n_elements(ymargin) ne 0) then !y.margin = ymargin

   min_x = min(x_variable,max=max_x)
   min_y = min(y_variable,max=max_y)
   
   if (n_elements(bindim) eq 0) then bindim = 100

   hist2d = hist_2d(long( (x_variable-min_x)/(max_x-min_x) * bindim),    $
                    long( (y_variable-min_y)/(max_y-min_y) * bindim) )

   if (keyword_set(tvim))    $
   then tvim,hist2d,/sc,/noframe,title=title     $
   else contour,hist2d,xstyle=5,ystyle=5,title=title,nlevels=nlevels,   $
           follow=follow,c_charsize=c_charsize

   axis,xaxis=0,xstyle=1,xrange=[min_x,max_x],xtitle=xtitle,xtick_get=xget, $
      /save
   axis,xaxis=1,xstyle=1,xrange=[min_x,max_x],xtitle='',   $
      xtickname=replicate(' ',n_elements(xget)+1)

   axis,yaxis=0,ystyle=1,yrange=[min_y,max_y],ytitle=ytitle,ytick_get=yget, $
      /save
   axis,yaxis=1,ystyle=1,yrange=[min_y,max_y],ytitle='',   $
      ytickname=replicate(' ',n_elements(yget)+1)

   !y.margin = old_ymargin

end