From c61e58da0ad88d57697e23836df0c9de4c0db911 Mon Sep 17 00:00:00 2001 From: Dima Kogan Date: Fri, 13 Nov 2015 11:07:18 -0800 Subject: [PATCH] added --equation --- bin/feedgnuplot | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/bin/feedgnuplot b/bin/feedgnuplot index a731978..a5fcd5d 100755 --- a/bin/feedgnuplot +++ b/bin/feedgnuplot @@ -89,6 +89,7 @@ sub interpretCommandline $options{extracmds} = []; $options{set} = []; $options{unset} = []; + $options{equation} = []; $options{curvestyleall} = ''; $options{styleall} = ''; @@ -102,6 +103,7 @@ sub interpretCommandline 'zmin=f', 'zmax=f', 'y2=s@', 'style=s{2}', 'curvestyle=s{2}', 'curvestyleall=s', 'styleall=s', 'with=s', 'extracmds=s@', 'set=s@', 'unset=s@', 'square!', 'square_xy!', 'hardcopy=s', 'maxcurves=i', 'monotonic!', 'timefmt=s', + 'equation=s@', 'histogram=s@', 'binwidth=f', 'histstyle=s', 'terminal=s', 'rangesize=s{2}', 'rangesizeall=i', 'extraValuesPerPoint=i', @@ -818,7 +820,9 @@ sub plotStoredData my @nonemptyCurves = grep { $_->{datastring} } @curves; my @extraopts = map {$_->{options}} @nonemptyCurves; - my $body = join(', ' , map({ "'-' $_" } @extraopts) ); + my $body = join('', map { "$_," } @{$options{equation}}); + $body .= join(', ' , map({ "'-' $_" } @extraopts) ); + if($options{'3d'}) { print PIPE "splot $body\n"; } else { print PIPE "plot $body\n"; } @@ -1610,6 +1614,34 @@ times. =item +C<--equation xxx> + +Gnuplot can plot both data and symbolic equations. C generally +plots data, but with this option can plot symbolic equations /also/. This is +generally intended to augment data plots, since for equation-only plots you +don't need C. C<--equation> can be passed multiple times for +multiple equations. The given strings are passed to gnuplot directly without any +thing added or removed, so styling and such should be applied in the string. A +basic example: + + seq 100 | awk '{print $1/10, $1/100}' | + feedgnuplot --with 'lines lw 3' --domain --ymax 1 + --equation 'sin(x)/x' --equation 'cos(x)/x with lines lw 4' + +Here I plot the incoming data (points along a line) with the given style (a line +with thickness 3), /and/ I plot two damped sinusoids on the same plot. The +sinusoids are not affected by C styling, so their styles are set +separately, as in this example. More complicated example: + + seq 360 | perl -nE '$th=$_/360 * 3.14*2; $c=cos($th); $s=sin($th); say "$c $s"' | + feedgnuplot --domain --square + --set parametric --set "trange [0:2*3.14]" --equation "sin(t),cos(t)" + +Here the data I generate is points along the unit circle. I plot these as +points, and I /also/ plot a true circle as a parametric equation. + +=item + C<--square> Plot data with aspect ratio 1. For 3D plots, this controls the aspect ratio for