]> Creatis software - CreaPhase.git/blobdiff - octave_packages/m/plot/grid.m
update packages
[CreaPhase.git] / octave_packages / m / plot / grid.m
diff --git a/octave_packages/m/plot/grid.m b/octave_packages/m/plot/grid.m
new file mode 100644 (file)
index 0000000..f4cebf9
--- /dev/null
@@ -0,0 +1,121 @@
+## Copyright (C) 1993-2012 John W. Eaton
+##
+## This file is part of Octave.
+##
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or (at
+## your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn  {Function File} {} grid (@var{arg})
+## @deftypefnx {Function File} {} grid ("minor", @var{arg2})
+## @deftypefnx {Function File} {} grid (@var{hax}, @dots{})
+## Force the display of a grid on the plot.
+## The argument may be either @code{"on"}, or @code{"off"}.
+## If it is omitted, 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.
+##
+## If the first argument is an axis handle, @var{hax}, operate on the
+## specified axis object.
+## @seealso{plot}
+## @end deftypefn
+
+## Author: jwe
+
+function grid (varargin)
+
+  [ax, varargin, nargs] = __plt_get_axis_arg__ ("grid", varargin{:});
+
+  grid_on = (strcmp (get (ax, "xgrid"), "on")
+             && strcmp (get (ax, "ygrid"), "on")
+             && strcmp (get (ax, "zgrid"), "on"));
+
+  minor_on = (strcmp (get (ax, "xminorgrid"), "on")
+              && strcmp (get (ax, "yminorgrid"), "on")
+              && strcmp (get (ax, "zminorgrid"), "on"));
+
+  if (nargs > 2)
+    print_usage ();
+  elseif (nargs == 0)
+    grid_on = ! grid_on;
+  else
+    x = varargin{1};
+    if (ischar (x))
+      if (strcmpi (x, "off"))
+        grid_on = false;
+      elseif (strcmpi (x, "on"))
+        grid_on = true;
+      elseif (strcmpi (x, "minor"))
+        if (nargs == 2)
+          x2 = varargin{2};
+          if (strcmpi (x2, "on"))
+            minor_on = true;
+            grid_on = true;
+          elseif (strcmpi (x2, "off"))
+            minor_on = false;
+          else
+            print_usage ();
+          endif
+        else
+           minor_on = ! minor_on;
+           if (minor_on)
+             grid_on = true;
+           endif
+        endif
+      else
+        print_usage ();
+      endif
+    else
+      error ("grid: argument must be a string");
+    endif
+  endif
+
+  if (grid_on)
+    set (ax, "xgrid", "on", "ygrid", "on", "zgrid", "on");
+    if (minor_on)
+      set (ax, "xminorgrid", "on", "yminorgrid", "on", "zminorgrid", "on");
+    else
+      set (ax, "xminorgrid", "off", "yminorgrid", "off", "zminorgrid", "off");
+    endif
+  else
+    set (ax, "xgrid", "off", "ygrid", "off", "zgrid", "off");
+    set (ax, "xminorgrid", "off", "yminorgrid", "off", "zminorgrid", "off");
+  endif
+
+endfunction
+
+%!demo
+%! clf
+%! subplot (2,2,1)
+%! plot (1:100)
+%! grid minor
+%! grid minor
+%! grid
+%! title ("no grid")
+%! subplot (2,2,2)
+%! plot (1:100)
+%! grid
+%! title ("grid on")
+%! subplot (2,2,3)
+%! plot (1:100)
+%! grid minor
+%! title ("grid minor")
+%! subplot (2,2,4)
+%! semilogy (1:100)
+%! grid minor
+%! title ("grid minor")
+