#! /bin/csh -f 
# Last edited on 2008-02-04 20:51:18 by stolfi

set usage = "$0 [-field FN] [-title 'TITLE'] [-keys 'TIT1 .. TITn'] FRFILE1 .. FRFILEn > EPSFILE"

# Generates a log-log Zipf plot (word's frequency fr(w) versus 
# word's frequency rank rk(w), for all words w), with a 1/rk 
# comparison curve.  
#
# The files must be sorted by decreasing frequency.  Assumes
# the frequency is field FN of each file (default FN = 2).

set title = " "
set keys = ( )
set field = 2
while ( ( $#argv > 0 ) && ( "/$1" =~ /-* ) ) 
  if ( ( $#argv >= 2 ) && ( "/$1" == "/-field" ) ) then
    set field = "$2"; shift; shift
  else if ( ( $#argv >= 2 ) && ( "/$1" == "/-title" ) ) then
    set title = "$2"; shift; shift
  else if ( ( $#argv >= 2 ) && ( "/$1" == "/-keys" ) ) then
    set keys = ( `echo $2` ); shift; shift
  else
    echo "bad option $1"
    echo "usage: ${usage}"; exit 1
  endif
end

if ( $#argv == 0 ) then
  echo "usage: ${usage}"; exit 1
endif

set files = ( $* )

if ( ( $#keys != 0 ) && ( $#keys != $#files ) ) then
  echo "keys don't match files"; exit 1
endif

set gfile = "/tmp/$$.gnuplot"
set psfile = "/tmp/$$.eps"

cat <<EOF > ${gfile}
set size 1.0,1.2
set term postscript eps "Courier" 28 
set output "${psfile}"
set title "${title}"
set logscale xy
plot (abs(x)<0.9?1/0:0.1/x) notitle with lines lt 3 \
,    (abs(x)<0.9?1/0:0.01/x) notitle with lines lt 3 \
EOF

@ lt = 1
@ pt = 1
foreach ifile ( $files )
  if ( $#keys == 0 ) then
    set key = "${f:r}"; set key = "${key:t}"
  else
    set key = ${keys[1]}; set keys = ( ${keys[2-]} )
  endif
  echo ',    "'"${ifile}"'" using :'"${field}"' title "'"${key}"'" with lines lt '"${lt}"' \' >> ${gfile}
  @ lt = 2
  @ pt = $pt + 1
end

cat <<EOF >> ${gfile}

quit
EOF

gnuplot < ${gfile}

cat ${psfile}

/bin/rm -f ${gfile} ${psfile}