diff scripts/plot/bar.m @ 3260:cd454a6fa1a4

[project @ 1999-08-02 21:55:15 by jwe]
author jwe
date Mon, 02 Aug 1999 21:56:44 +0000
parents 8b262e771614
children a4cd1e9d9962
line wrap: on
line diff
--- a/scripts/plot/bar.m
+++ b/scripts/plot/bar.m
@@ -69,24 +69,34 @@
       if (xlen == ylen)
         len = 3 * xlen + 1;
         tmp_xb = tmp_yb = zeros (len, 1);
-        delta = (x(2) - x(1)) / 2.0;
-        tmp_xb(1) = x(1) - delta;
+        cutoff = zeros (1, xlen-1);
+        for i = 1:xlen-1
+          cutoff(i) = (x(i) + x(i+1)) / 2.0;
+        endfor
+        delta_p = cutoff(1) - x(1);
+        delta_m = delta_p;
+        tmp_xb(1) = x(1) - delta_m;
         tmp_yb(1) = 0.0;
 	k = 1;
         for i = 2:3:len
           tmp_xb(i) = tmp_xb(i-1);
-          tmp_xb(i+1) = tmp_xb(i) + 2.0 * delta;
+          tmp_xb(i+1) = x(k) + delta_p;
           tmp_xb(i+2) = tmp_xb(i+1);
 	  tmp_yb(i) = y(k);
 	  tmp_yb(i+1) = y(k);
 	  tmp_yb(i+2) = 0.0;
           if (k < xlen)
-            delta = (x(k+1) - x(k)) / 2.0;
             if (x(k+1) < x(k))
               error ("bar: x vector values must be in ascending order");
             endif
-          endif
-          k++;
+	    delta_m = x(k+1) - cutoff(k);
+            k++;
+            if (k < xlen)
+              delta_p = cutoff(k) - x(k);
+	    else
+	      delta_p = delta_m;
+            endif
+	  endif
 	endfor
       else
         error ("bar: arguments must be the same length");