axis tight fails for plots with more than one line

Garrett Euler ggeuler at seismo.wustl.edu
Fri Jun 5 13:28:23 CDT 2009


Bug report for Octave 3.2.0 configured for x86_64-unknown-linux-gnu

Description:
-----------

  * Using the command "axis tight" fails on plots with multiple lines.
    This is with Octave 3.2.0-rc7 (I believe this is the official
    release too).  I have included a short test and a fix for the
    __get_tight_lims__ function in axis.m.

    __get_tight_lims__ (had it worked) also returned incorrect limits 
    for plots with multiple lines (it used min(max()) instead of 
    max(max()) ).  This was fixed here too.

Repeat-By:
---------

  *  octave:1> plot(1:10)
octave:2> hold on
octave:3> plot(1:10)
octave:4> axis tight
error: cellfun: expecting all values to be scalars for UniformOutput = true
error: evaluating argument list element number 1
error: evaluating argument list element number 1
error: called from:
error:   /usr/local/share/octave/3.2.0/m/plot/axis.m at line 301, column 15
error: evaluating argument list element number 7
error: evaluating argument list element number 1
error:   /usr/local/share/octave/3.2.0/m/plot/axis.m at line 313, column 3
error:   /usr/local/share/octave/3.2.0/m/plot/axis.m at line 200, column 1
octave:4> 

Fix:
---


	* m/plot/axis.m: Fixed axis tight handling of plots with more
    than one line.

--- /usr/local/share/octave/3.2.0/m/plot/axis-orig.m	2009-06-05 08:46:09.000000000 -0500
+++ /usr/local/share/octave/3.2.0/m/plot/axis.m	2009-06-05 09:41:45.000000000 -0500
@@ -298,8 +298,8 @@ function lims = __get_tight_lims__ (ca, 
   else
     data = get (kids, strcat (ax, "data"));
     if (iscell (data))
-      lims(1) = min (cellfun (@min, data)(:));
-      lims(2) = min (cellfun (@max, data)(:));
+      lims = [min(cell2mat(cellfun(@min,data,'UniformOutput',false))) ...
+              max(cell2mat(cellfun(@max,data,'UniformOutput',false)))];
     else
       lims = [min(data(:)), max(data(:))];
     endif



More information about the Bug-octave mailing list