#! /bin/bash # invoke gnuplot to create a probability plot from specified data column pairs # check for presence of command arguments if [ ! -n "$1" ] then echo 'invocation: probplot [valcol-1 fraccol-1 file-1] [valcol-2 fraccol-2 file-2] .... [valcol-n fraccol-n file-n]' exit fi # grab and count command arguments let ncmdarg=0 for ncmd in $* do let ncmdarg=ncmdarg+1 cmdarg[ncmdarg]="$ncmd" # echo "Command argument $ncmdarg = ${cmdarg[ncmdarg]}" done # create triad column numbers, file name list # sequence counts by 3 let nfile=0 for vcol in $( seq 1 3 $ncmdarg ) do # increment triad index let nfile=nfile+1 # create value column number array valcol[nfile]="${cmdarg[vcol]}" # create index to second member of triad let fcol=vcol+1 # create fraction column number array fraccol[nfile]="${cmdarg[fcol]}" # create index to third member of triad let narg=fcol+1 # create filename array filename[nfile]="${cmdarg[narg]}" #echo "Value column number = ${valcol[nfile]}" #echo "Fraction column number = ${fraccol[nfile]}" #echo "File name = ${filename[nfile]}" # find number of index blocks in this file linecount=`wc -l < ${filename[nfile]}` lineswithnumbers=`grep -c '\.' < ${filename[nfile]}` let fileindex=(linecount-lineswithnumbers-1)/2 #echo "fileindex = ${fileindex}" # check to use minimum of all files numindex=`echo "$fileindex $numindex" | stats min` #echo "numindex now equal to $numindex" done plotfile=temp.plt echo reset > $plotfile #echo "set terminal pdf" >> $plotfile #echo "set output 'plot.pdf'" >> $plotfile echo "set ytics ('0.1' invnorm(0.001),'1' invnorm(0.01),'5' invnorm(0.05),\\" >> $plotfile echo " '10' invnorm(0.1),'20' invnorm(0.2),'30' invnorm(0.3),\\" >> $plotfile echo " '40' invnorm(0.4),'50' invnorm(0.5),'60' invnorm(0.6),\\" >> $plotfile echo " '70' invnorm(0.7),'80' invnorm(0.8),'90' invnorm(0.9),\\" >> $plotfile echo " '95' invnorm(0.95),'99' invnorm(0.99),'99.9' invnorm(0.999))" >> $plotfile echo "set yrange [invnorm(0.0001):invnorm(0.9999)]" >> $plotfile echo "set ylabel 'Cumulative mass fraction (%)'" >> $plotfile echo "set xlabel 'Diameter (mm)'" >> $plotfile echo "set logscale x" >> $plotfile echo "set grid" >> $plotfile echo "plot \\" >> $plotfile for fn in $( seq 1 $nfile ) do if [[ ${fn} -lt ${nfile} ]] then echo "'${filename[nfile]}' using ${valcol[nfile]}:(invnorm(\$${fraccol[nfile]})) notitle w lp, \\" >> $plotfile else echo "'${filename[nfile]}' using ${valcol[nfile]}:(invnorm(\$${fraccol[nfile]})) notitle w lp" >> $plotfile fi done echo "pause -1" >> $plotfile gnuplot $plotfile #rm $plotfile #rm $plot_out