Mercurial > hg > octave-lyh
diff scripts/plot/grid.m @ 5727:f0fbefd984f6
[project @ 2006-04-03 18:50:31 by jwe]
author | jwe |
---|---|
date | Mon, 03 Apr 2006 18:50:31 +0000 |
parents | 2618a0750ae6 |
children | 34f96dd5441b |
line wrap: on
line diff
--- a/scripts/plot/grid.m +++ b/scripts/plot/grid.m @@ -19,9 +19,16 @@ ## -*- texinfo -*- ## @deftypefn {Function File} {} grid (@var{arg}) +## @deftypefnx {Function File} {} grid ("minor", @var{arg2}) ## For two-dimensional plotting, force the display of a grid on the plot. ## The argument may be either @code{"on"} or @code{"off"}. If it is -## omitted, @code{"on"} is assumed. +## omitted, the the current grid state is toggled. +## +## If @var{arg} is @code{"minor"} then the minor grid is toggled. When +## using a minor grid a second argument @var{arg2} is allowed, which can +## be either @code{"on"} or @code{"off"} to explicitly set the state of +## the minor grid, or alternatively a positive integer specifying the +## number of minor grid lines. ## @seealso{plot, semilogx, semilogy, loglog, polar, mesh, contour, ## bar, stairs, replot, xlabel, ylabel, title} ## @end deftypefn @@ -30,22 +37,51 @@ ## PKG_ADD: mark_as_command grid -function grid (x) +function grid (x, y) + + persistent grid_on = false; + persistent minor_on = false; + persistent minor_tics = 5; usage_msg = "grid (\"on\" | \"off\")"; do_replot = false; if (nargin == 0) - __gnuplot_raw__ ("set grid;\n"); + grid_on = ! grid_on; + if (grid_on) + __gnuplot_raw__ ("set grid;\n"); + else + __gnuplot_raw__ ("set nogrid;\n"); + endif do_replot = true; elseif (nargin == 1) if (ischar (x)) if (strcmp ("off", x)) __gnuplot_raw__ ("set nogrid;\n"); + grid_on = false; do_replot = true; elseif (strcmp ("on", x)) __gnuplot_raw__ ("set grid;\n"); + grid_on = true; + do_replot = true; + elseif (strcmp ("minor", x)) + minor_on = ! minor_on; + if (minor_on) + cmd = sprintf ("set mxtics %d;\n", minor_tics); + __gnuplot_raw__ (cmd); + cmd = sprintf ("set mytics %d;\n", minor_tics); + __gnuplot_raw__ (cmd); + __gnuplot_raw__ ("set grid xtics mxtics ytics mxtics;\n"); + minor_on = true; + else + if (grid_on) + __gnuplot_raw__ ("set grid xtics nomxtics ytics nomxtics;\n"); + else + __gnuplot_raw__ ("set grid noxtics nomxtics noytics nomxtics;\n"); + endif + minor_on = false; + endif do_replot = true; else usage (usage_msg); @@ -53,9 +89,52 @@ else error ("grid: argument must be a string"); endif + elseif (nargin == 2) + if (ischar (x)) + if (strcmp ("minor", x)) + d = str2num (y); + if (isempty (d)) + if (strcmp ("off", y)) + if (grid_on) + __gnuplot_raw__ ("set grid xtics nomxtics ytics nomxtics;\n"); + else + __gnuplot_raw__ ("set grid noxtics nomxtics noytics nomxtics;\n"); + endif + minor_on = false; + elseif (strcmp ("on", y)) + cmd = sprintf ("set mxtics %d;\n", minor_tics); + __gnuplot_raw__ (cmd); + cmd = sprintf ("set mytics %d;\n", minor_tics); + __gnuplot_raw__ (cmd); + __gnuplot_raw__ ("set grid xtics mxtics ytics mxtics;\n"); + minor_on = true; + else + usage (usage_msg); + endif + do_replot = true; + else + if (isscalar(d) && ! isnan (d) && ! isinf (d)) + minor_tics = max (floor (d), 0); + cmd = sprintf ("set mxtics %d;\n", minor_tics); + __gnuplot_raw__ (cmd); + cmd = sprintf("set mytics %d;\n", minor_tics); + __gnuplot_raw__ (cmd); + __gnuplot_raw__ ("set grid xtics mxtics ytics mxtics;\n"); + minor_on = true; + do_replot = true; + else + usage (usage_msg); + endif + endif + else + usage (usage_msg); + endif + else + usage (usage_msg); + endif else usage (usage_msg); - endif + endif if (do_replot && automatic_replot) replot ();