;+ ; NAME: ; SYM ; ; PURPOSE: ; ; This function provides a convenient way to utilize the ; USERSYM procedure to create an extended choice of plotting ; symbols, and is intended to be used directly with the PSYM ; keyword to PLOT, OPLOT, etc. ; ; CALLING SEQUENCE: ; ; Result=SYM(NUMBER) ; ; INPUTS: ; ; NUMBER - symbol number ; ; 0 : dot ; 1 : filled circle ; 2 : filled upward triangle ; 3 : filled downward triangle ; 4 : filled diamond ; 5 : filled square ; 6 : open circle ; 7 : open upward triangle ; 8 : open downward triangle ; 9 : open diamond ; 10 : open square ; 11 : plus ; 12 : X ; 13 : star ; 14 : filled rightfacing triangle ; 15 : filled leftfacing triangle ; 16 : open rightfacing triangle ; 17 : open leftfacing triangle ; ; OUTPUTS: ; ; The function returns the symbol number to be used with the ; PSYM keyword in the PLOT, OPLOT, etc. commands ; ; SIDE EFFECTS: ; ; The USERSYM procedure is used to create a symbol definition. ; ; EXAMPLE: ; ; To produce a plot using open circles as plotting symbols: ; ; PLOT,X,Y,PSYM=SYM(6) ; ; MODIFICATION HISTORY: ; ; Martin Schultz, Harvard University, 22 Aug 1997: VERSION 1.00 ; ; (with some minor changes to the information in this header by ; D. Windt, windt@bell-labs.com) ; ;- ; Copyright (C) 1997, Martin Schultz, Harvard University ; This software is provided as is without any warranty ; whatsoever. It may be freely used, copied or distributed ; for non-commercial purposes. This copyright notice must be ; kept with any copy of this software. If this software shall ; be used commercially or sold as part of a larger package, ; please contact the author to arrange payment. ; Bugs and comments should be directed to mgs@io.harvard.edu ; with subject "IDL routine sym" ;------------------------------------------------------------- function sym,number on_error,2 ; return to caller if(n_elements(number) eq 0) then return,1 ; default result=8 ; default: return psym=8, i.e. ; user defined symbol ; define some help variables for ; circle : phi=findgen(32)*(!PI*2/32.) phi = [ phi, phi(0) ] case number of 0 : result = 3 ; dot 1 : usersym, cos(phi), sin(phi), /fill ; filled circle 2 : usersym, [ -1, 0, 1, -1 ], [ -1, 1, -1, -1 ], /fill ; filled upward triangle 3 : usersym, [ -1, 0, 1, -1 ], [ 1, -1, 1, 1 ], /fill ; filled downward triangle 4 : usersym, [ 0, 1, 0, -1, 0 ], [ 1, 0, -1, 0, 1 ], /fill ; filled diamond 5 : usersym, [ -1, 1, 1, -1, -1 ], [ 1, 1, -1, -1, 1 ], /fill ; filled square 6 : usersym, cos(phi), sin(phi) ; open circle 7 : usersym, [ -1, 0, 1, -1 ], [ -1, 1, -1, -1 ] ; open upward triangle 8 : usersym, [ -1, 0, 1, -1 ], [ 1, -1, 1, 1 ] ; open downward triangle 9 : usersym, [ 0, 1, 0, -1, 0 ], [ 1, 0, -1, 0, 1 ] ; open diamond 10 : usersym, [ -1, 1, 1, -1, -1 ], [ 1, 1, -1, -1, 1 ] ; open square 11 : result = 1 ; plus 12 : result = 7 ; X 13 : result = 2 ; star 14 : usersym, [ -1, 1, -1, -1 ], [1, 0, -1, 1 ], /fill ; rightfacing triangle, filled 15 : usersym, [ 1, -1, 1, 1 ], [1, 0, -1, 1 ], /fill ; leftfacing triangle, filled 16 : usersym, [ -1, 1, -1, -1 ], [1, 0, -1, 1 ] ; rightfacing triangle, open 17 : usersym, [ 1, -1, 1, 1 ], [1, 0, -1, 1 ] ; leftfacing triangle, open else : begin message,/info,'invalid symbol number - set to 1' result = 1 end endcase return,result end