[sci.electronics] spice3 plot beautifier

jmn@ibiza.berkeley.edu (Jan Mark Noworolski) (10/13/90)

If any of you use spice3, you no doubt have had noticed the low, low quality
of hardcopy plots (I am talking about the ones resulting from running under
Xwindows, not the chararacter plots).

Well I did, and so I sat down and wrote a filter to make spice3 'print'
statement outputs suitable for input to xgraph. Which in turn makes really
nice graphs which you can also include in latex documents if you want.

Some of you might want to use it, so here it is:
(how to get xgraph is described in the shar file also)

#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	readme
#	sp2xgraph
#	sp2xgraph.shar
# This archive created: Thu Oct 11 22:03:46 1990
export PATH; PATH=/bin:$PATH
if test -f 'readme'
then
	echo shar: will not over-write existing file "'readme'"
else
cat << \SHAR_EOF > 'readme'
This shell script is a filter to help make presentation quality graphs from
spice3 output, it filters output from spice3 'print' statements to a form 
suitable for input to xgraph.

xgraph is a program to plot data sets on an Xwindows display, it is available
by anonymous ftp from shambhala.berkeley.edu (128.32.132.54). These graphs can
then be output in several formats including HPGL, and encapsulated postscript.

Resulting output is much better than what you can get from hardcopies
of plots in spice3, and to boot it can be included as encapsulated postscript
in latex documents (don't ask me how to do this, I haven't tried yet).

Bug reports and (preferably) improvements to jmn@united.berkeley.edu
SHAR_EOF
fi # end of overwriting check
if test -f 'sp2xgraph'
then
	echo shar: will not over-write existing file "'sp2xgraph'"
else
cat << \SHAR_EOF > 'sp2xgraph'
#!/bin/csh 
set ylabel="Voltage"
set xlabel="Time"
while ($#argv > 0) 
	switch ("$argv[1]")
	case -i:
		if ($#argv <1) goto usageerror
		set ylabel="Current"
		shift
		breaksw
	case -f:
		if ($#argv < 1) goto usageerror
		set xlabel="Frequency"
		shift
		breaksw
	case -xl:
		if ($#argv < 2) goto usageerror
		set xlabel="$argv[2]"
		shift
		shift
		breaksw
	case -yl:
		if ($#argv < 2) goto usageerror
		set ylabel="$argv[2]"
		shift
		shift
		breaksw
	case -pn:
		if ($#argv < 2) goto usageerror
		set plotname="$argv[2]"
		shift
		shift
		breaksw
	case -s:
		set fn	
		if !($?plotname) set plotname=$fn endif
		shift
		breaksw
	default:
		set fn=$argv[1]
		if !($?plotname) set plotname=$fn endif
		shift
		breaksw
	endsw
end

if ($?fn) then
sed -e '/\$/,/^----/d' -e 's/^Index  *[^ ]*  */\"/' -e 's/^  *.*$//' -e '/^--*/d' -e 's/^0 */move /' -e 's/^[0-9]*//' -e '1i\\
TitleText: '"$plotname"'\\
XUnitText: '"$xlabel"'\\
YUnitText: '"$ylabel"' ' -e 's/\,[ 	]*[+-0-9e]*//g' $fn
else
usage:
echo -n
echo 'Usage:'" $0 [options] filename"
echo "This program translates spice3 print command output to xgraph input format."
echo "It WILL handle multiple variables in one file- provided they were put there"
echo "by _consecutive_ print statements. ie. 'print i1 i2 > filename' will not work"
echo "but 'print i1 > filename' followed by 'print i2 >> filename' WILL work."
echo "Output is on stdout. Author: jmn@power.berkeley.edu"
echo "Options are:"
echo "  -i		Set YAxisLabel to 'Current' (default is 'Voltage')"
echo "  -f 		Set XaxisLabel to 'Frequency' (default is 'Time')"
echo "  -xl XName	Set XaxisLabel to Xname"
echo "  -yl YName	Set YaxisLabel to Yname"
echo "  -pn PlotName	Set PlotTitle to PlotName (default is filename)"
echo "  -s		Take input from stdin"
echo -n
echo "Example Usage:"
echo "$0 -xl 'log(frequency)' -yl 'Gain(db)' -pn '741 Plot' filename | xgraph"
echo "will plot a graph called '741 Plot' with Gain(db) vs log(frequency)."
exit 1
usageerror:
	echo $argv[1] needs more arguments!
	goto usage

endif
SHAR_EOF
chmod +x 'sp2xgraph'
fi # end of overwriting check
if test -f 'sp2xgraph.shar'
then
	echo shar: will not over-write existing file "'sp2xgraph.shar'"
else
cat << \SHAR_EOF > 'sp2xgraph.shar'

SHAR_EOF
fi # end of overwriting check
#	End of shell archive
exit 0

--
"There's a really fine line between clever and stupid"
				Nigel- Lead Guitar (Spinal Tap)
jmn@united.berkeley.edu, or jmn@power.berkeley.edu