changeset 22408:22f22d53f135

Do not change grid for semilog plots on second call of "grid on" (bug #48533) * grid.m: Do not change grid for semilogx or semilogy plots on second call of "grid on". Add test for semilog plots. Add demo with only minor grid lines (no major grid).
author Markus Mützel <markus.muetzel@gmx.de>
date Tue, 30 Aug 2016 18:59:34 +0200
parents 34ce5be04942
children fda8d91b2e71
files scripts/plot/appearance/grid.m
diffstat 1 files changed, 86 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/plot/appearance/grid.m	Tue Aug 30 21:46:47 2016 -0700
+++ b/scripts/plot/appearance/grid.m	Tue Aug 30 18:59:34 2016 +0200
@@ -62,11 +62,15 @@
   grid_on = any (strcmp (get (hax, {"xgrid", "ygrid", "zgrid"}), "on"));
 
   minor_on = any (strcmp (get (hax, {"xminorgrid", "yminorgrid", "zminorgrid"}),
-                         "on"));
+                         "on") &
+                  ! strcmp (get (hax, {"xscale", "yscale", "zscale"}), "log"));
 
   minor_auto = true;
   if (nargs == 0)
     grid_on = ! grid_on;
+    if (! grid_on)
+      minor_auto = false;
+    endif
   else
     arg1 = varargin{1};
     if (! ischar (arg1))
@@ -78,6 +82,8 @@
       minor_auto = false;
     elseif (strcmpi (arg1, "on"))
       grid_on = true;
+      minor_on = false;
+      minor_auto = true;
     elseif (strcmpi (arg1, "minor"))
       minor_auto = false;
       if (nargs == 2)
@@ -162,8 +168,20 @@
 %!  grid minor;
 %!  title ("grid minor");
 
+%!demo
+%! ## Display minor grid lines at major ticks
+%! clf;
+%! subplot (1,2,1)
+%!  plot (1:10);
+%!  set (gca, "xminorgrid", "on");
+%!  set (gca, "yminorgrid", "on");
+%! subplot (1,2,2)
+%!  semilogy (1:100);
+%!  set (gca, "xminorgrid", "on");
+%!  set (gca, "yminorgrid", "on");
+
 ## linear scaling
-%!test
+%!test <48533>
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   hax = axes ();
@@ -221,3 +239,69 @@
 %!   close (hf);
 %! end_unwind_protect
 
+## semilog scaling
+%!test <48533>
+%! hf = figure ("visible", "off");
+%! unwind_protect
+%!   hax = axes ();
+%!   semilogy (1:100);
+%!   grid on
+%!   assert (get (hax, "xgrid"), "on");
+%!   assert (get (hax, "ygrid"), "on");
+%!   assert (get (hax, "zgrid"), "on");
+%!   assert (get (hax, "xminorgrid"), "off");
+%!   assert (get (hax, "yminorgrid"), "on");
+%!   assert (get (hax, "zminorgrid"), "off");
+%!   grid on
+%!   assert (get (hax, "xgrid"), "on");
+%!   assert (get (hax, "ygrid"), "on");
+%!   assert (get (hax, "zgrid"), "on");
+%!   assert (get (hax, "xminorgrid"), "off");
+%!   assert (get (hax, "yminorgrid"), "on");
+%!   assert (get (hax, "zminorgrid"), "off");
+%!   grid minor
+%!   assert (get (hax, "xgrid"), "on");
+%!   assert (get (hax, "ygrid"), "on");
+%!   assert (get (hax, "zgrid"), "on");
+%!   assert (get (hax, "xminorgrid"), "on");
+%!   assert (get (hax, "yminorgrid"), "on");
+%!   assert (get (hax, "zminorgrid"), "on");
+%!   grid off
+%!   assert (get (hax, "xgrid"), "off");
+%!   assert (get (hax, "ygrid"), "off");
+%!   assert (get (hax, "zgrid"), "off");
+%!   assert (get (hax, "xminorgrid"), "off");
+%!   assert (get (hax, "yminorgrid"), "off");
+%!   assert (get (hax, "zminorgrid"), "off");
+%!   grid minor
+%!   assert (get (hax, "xgrid"), "off");
+%!   assert (get (hax, "ygrid"), "off");
+%!   assert (get (hax, "zgrid"), "off");
+%!   assert (get (hax, "xminorgrid"), "on");
+%!   assert (get (hax, "yminorgrid"), "on");
+%!   assert (get (hax, "zminorgrid"), "on");
+%!   grid minor
+%!   assert (get (hax, "xgrid"), "off");
+%!   assert (get (hax, "ygrid"), "off");
+%!   assert (get (hax, "zgrid"), "off");
+%!   assert (get (hax, "xminorgrid"), "off");
+%!   assert (get (hax, "yminorgrid"), "off");
+%!   assert (get (hax, "zminorgrid"), "off");
+%!   grid
+%!   assert (get (hax, "xgrid"), "on");
+%!   assert (get (hax, "ygrid"), "on");
+%!   assert (get (hax, "zgrid"), "on");
+%!   assert (get (hax, "xminorgrid"), "off");
+%!   assert (get (hax, "yminorgrid"), "on");
+%!   assert (get (hax, "zminorgrid"), "off");
+%!   grid
+%!   assert (get (hax, "xgrid"), "off");
+%!   assert (get (hax, "ygrid"), "off");
+%!   assert (get (hax, "zgrid"), "off");
+%!   assert (get (hax, "xminorgrid"), "off");
+%!   assert (get (hax, "yminorgrid"), "off");
+%!   assert (get (hax, "zminorgrid"), "off");
+%! unwind_protect_cleanup
+%!   close (hf);
+%! end_unwind_protect
+