changeset 6809:5e61f0bc0c27

[project @ 2007-08-10 18:41:33 by jwe]
author jwe
date Fri, 10 Aug 2007 18:41:34 +0000
parents 64b2d6bcd54e
children 56a7de3f6451
files scripts/ChangeLog scripts/plot/__go_draw_axes__.m src/ChangeLog src/graphics.cc src/graphics.h
diffstat 5 files changed, 88 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/ChangeLog	Fri Aug 10 18:19:32 2007 +0000
+++ b/scripts/ChangeLog	Fri Aug 10 18:41:34 2007 +0000
@@ -1,3 +1,8 @@
+2007-08-10  Peter A. Gustafson  <petegus@umich.edu>
+
+	* plot/__go_draw_axes__.m: Add axes position to the usingclause,
+	use axes position in each appropriate gnuplot set statement.
+
 2007-08-10  John W. Eaton  <jwe@octave.org>
 
 	* image/Makefile.in (DISTFILES): Also include $(IMAGES) in the list.
--- a/scripts/plot/__go_draw_axes__.m	Fri Aug 10 18:19:32 2007 +0000
+++ b/scripts/plot/__go_draw_axes__.m	Fri Aug 10 18:41:34 2007 +0000
@@ -117,16 +117,31 @@
       endif
     endif
 
+    if (strcmpi (axis_obj.xaxislocation, "top"))
+      xaxisloc = "x2";
+      xaxisloc_using = "x2";
+    else
+      xaxisloc = "x";
+      xaxisloc_using = "x1";
+    endif
+    if (strcmpi (axis_obj.yaxislocation, "right"))
+      yaxisloc = "y2";
+      yaxisloc_using = "y2";
+    else
+      yaxisloc = "y";
+      yaxisloc_using = "y1";
+    endif
+
     if (strcmpi (axis_obj.xgrid, "on"))
-      fputs (plot_stream, "set grid xtics;\n");
+      fprintf (plot_stream, "set grid %stics;\n", xaxisloc);
     else
-      fputs (plot_stream, "set grid noxtics;\n");
+      fprintf (plot_stream, "set grid no%stics;\n", xaxisloc);
     endif
 
     if (strcmpi (axis_obj.ygrid, "on"))
-      fputs (plot_stream, "set grid ytics;\n");
+      fprintf (plot_stream, "set grid %stics;\n", yaxisloc);
     else
-      fputs (plot_stream, "set grid noytics;\n");
+      fprintf (plot_stream, "set grid no%stics;\n", yaxisloc);
     endif
 
     if (strcmpi (axis_obj.zgrid, "on"))
@@ -136,17 +151,17 @@
     endif
 
     if (strcmpi (axis_obj.xminorgrid, "on"))
-      fputs (plot_stream, "set mxtics 5;\n");
-      fputs (plot_stream, "set grid mxtics;\n");
+      fprintf (plot_stream, "set m%stics 5;\n", xaxisloc);
+      fprintf (plot_stream, "set grid m%stics;\n", xaxisloc);
     else
-      fputs (plot_stream, "set grid nomxtics;\n");
+      fprintf (plot_stream, "set grid nom%stics;\n", xaxisloc);
     endif
 
     if (strcmpi (axis_obj.yminorgrid, "on"))
-      fputs (plot_stream, "set mytics 5;\n");
-      fputs (plot_stream, "set grid mytics;\n");
+      fprintf (plot_stream, "set m%stics 5;\n", yaxisloc);
+      fprintf (plot_stream, "set grid m%stics;\n", yaxisloc);
     else
-      fputs (plot_stream, "set grid nomytics;\n");
+      fprintf (plot_stream, "set grid nom%stics;\n", yaxisloc);
     endif
 
     if (strcmpi (axis_obj.zminorgrid, "on"))
@@ -160,16 +175,16 @@
 
     xlogscale = strcmpi (axis_obj.xscale, "log");
     if (xlogscale)
-      fputs (plot_stream, "set logscale x;\n");
+      fprintf (plot_stream, "set logscale %s;\n", xaxisloc);
     else
-      fputs (plot_stream, "unset logscale x;\n");
+      fprintf (plot_stream, "unset logscale %s;\n", xaxisloc);
     endif
 
     ylogscale = strcmpi (axis_obj.yscale, "log");
     if (ylogscale)
-      fputs (plot_stream, "set logscale y;\n");
+      fprintf (plot_stream, "set logscale %s;\n", yaxisloc);
     else
-      fputs (plot_stream, "unset logscale y;\n");
+      fprintf (plot_stream, "unset logscale %s;\n", yaxisloc);
     endif
 
     zlogscale = strcmpi (axis_obj.zscale, "log");
@@ -397,14 +412,16 @@
 		[ymin, ymax, yminp] = get_data_limits (ymin, ymax, yminp, ydat);
 	      endif
 	      data{data_idx} = [xdat, ydat]';
-	      usingclause{data_idx} = "using ($1):($2)";
+	      usingclause{data_idx} = sprintf ("using ($1):($2) axes %s%s",
+					      xaxisloc_using, yaxisloc_using);
 	    endif
 	  endif
 	  if (! (have_newer_gnuplot || isempty (with)))
 	    if (isempty (withclause{data_idx}))
-	      withclause{data_idx} = sprintf("with %s", with);
+	      withclause{data_idx} = sprintf ("with %s", with);
 	    else
-	      withclause{data_idx} = sprintf("%s %s", withclause{data_idx}, with);
+	      withclause{data_idx} = sprintf ("%s %s", withclause{data_idx},
+					      with);
 	    endif
 	  endif
 
@@ -468,10 +485,10 @@
            if (strncmp (obj.edgecolor, "none", 4))
              color = [1, 1, 1];
            elseif (strncmp (obj.edgecolor, "flat", 4))
-             warning("\"flat\" for edgecolor not supported");
+             warning ("\"flat\" for edgecolor not supported");
              color = [0, 0, 0];
            elseif (strncmp (obj.edgecolor, "interp", 6))
-             warning("\"interp\" for edgecolor not supported");
+             warning ("\"interp\" for edgecolor not supported");
              color = [0, 0, 0];
            else
 	     color = obj.edgecolor;
@@ -620,7 +637,7 @@
     else
       xdir = "noreverse";
     endif
-    fprintf (plot_stream, "set xrange [%g:%g] %s;\n", xlim, xdir);
+    fprintf (plot_stream, "set %srange [%g:%g] %s;\n", xaxisloc, xlim, xdir);
 
     if (yautoscale && have_data)
       ylim = get_axis_limits (ymin, ymax, yminp, ylogscale);
@@ -633,7 +650,7 @@
     else
       ydir = "noreverse";
     endif
-    fprintf (plot_stream, "set yrange [%g:%g] %s;\n", ylim, ydir);
+    fprintf (plot_stream, "set %srange [%g:%g] %s;\n", yaxisloc, ylim, ydir);
 
     if (nd == 3)
       if (zautoscale && have_data)
@@ -997,10 +1014,28 @@
 endfunction
 
 function do_tics (obj, plot_stream)
-  do_tics_1 (obj.xtickmode, obj.xtick, obj.xticklabelmode, obj.xticklabel,
-	     "x", plot_stream);
-  do_tics_1 (obj.ytickmode, obj.ytick, obj.yticklabelmode, obj.yticklabel,
-	     "y", plot_stream);
+  if (strcmpi (obj.xaxislocation, "top"))
+    do_tics_1 (obj.xtickmode, obj.xtick, obj.xticklabelmode, obj.xticklabel,
+	       "x2", plot_stream);
+    do_tics_1 ("manual", [], obj.xticklabelmode, obj.xticklabel,
+	       "x", plot_stream);
+  else
+    do_tics_1 (obj.xtickmode, obj.xtick, obj.xticklabelmode, obj.xticklabel,
+	       "x", plot_stream);
+    do_tics_1 ("manual", [], obj.xticklabelmode, obj.xticklabel,
+	       "x2", plot_stream);
+  endif
+  if (strcmpi (obj.yaxislocation, "right"))
+    do_tics_1 (obj.ytickmode, obj.ytick, obj.yticklabelmode, obj.yticklabel,
+	       "y2", plot_stream);
+    do_tics_1 ("manual", [], obj.yticklabelmode, obj.yticklabel,
+	       "y", plot_stream);
+  else
+    do_tics_1 (obj.ytickmode, obj.ytick, obj.yticklabelmode, obj.yticklabel,
+	       "y", plot_stream);
+    do_tics_1 ("manual", [], obj.yticklabelmode, obj.yticklabel,
+	       "y2", plot_stream);
+  endif
   do_tics_1 (obj.ztickmode, obj.ztick, obj.zticklabelmode, obj.zticklabel,
 	     "z", plot_stream);
 endfunction
--- a/src/ChangeLog	Fri Aug 10 18:19:32 2007 +0000
+++ b/src/ChangeLog	Fri Aug 10 18:41:34 2007 +0000
@@ -1,3 +1,8 @@
+2007-08-10  Peter A. Gustafson  <petegus@umich.edu>
+
+	* graphics.h, graphics.cc (axes::axes_properties): New properties,
+	xaxislocation and yaxislocation.
+
 2007-08-10  Kai Habel  <kai.habel@gmx.de>
 
 	* graphics.cc, graphics.h (patch): New class.
--- a/src/graphics.cc	Fri Aug 10 18:19:32 2007 +0000
+++ b/src/graphics.cc	Fri Aug 10 18:41:34 2007 +0000
@@ -977,6 +977,8 @@
     xdir ("normal"),
     ydir ("normal"),
     zdir ("normal"),
+    xaxislocation ("bottom"),
+    yaxislocation ("left"),
     view (),
     visible ("on"),
     nextplot ("replace"),
@@ -1174,6 +1176,10 @@
     ydir = val;
   else if (name.compare ("zdir"))
     zdir = val;
+  else if (name.compare ("xaxislocation"))
+    xaxislocation = val;
+  else if (name.compare ("yaxislocation"))
+    yaxislocation = val;
   else if (name.compare ("view"))
     view = val;
   else if (name.compare ("visible"))
@@ -1246,6 +1252,8 @@
   xdir = "normal";
   ydir = "normal";
   zdir = "normal";
+  xaxislocation = "left";
+  yaxislocation = "bottom";
 
   Matrix tview (1, 2, 0.0);
   tview(1) = 90;
@@ -1336,6 +1344,8 @@
   m.assign ("xdir", xdir);
   m.assign ("ydir", ydir);
   m.assign ("zdir", zdir);
+  m.assign ("xaxislocation", xaxislocation);
+  m.assign ("yaxislocation", yaxislocation);
   m.assign ("view", view);
   m.assign ("visible", visible);
   m.assign ("nextplot", nextplot);
@@ -1463,6 +1473,10 @@
     retval = ydir;
   else if (name.compare ("zdir"))
     retval = zdir;
+  else if (name.compare ("xaxislocation"))
+    retval = xaxislocation;
+  else if (name.compare ("yaxislocation"))
+    retval = yaxislocation;
   else if (name.compare ("view"))
     retval = view;
   else if (name.compare ("visible"))
@@ -1566,6 +1580,8 @@
   m["xdir"] = "normal";
   m["ydir"] = "normal";
   m["zdir"] = "normal";
+  m["xaxislocation"] = "bottom";
+  m["yaxislocation"] = "left";
 
   Matrix tview (1, 2, 0.0);
   tview(1) = 90;
--- a/src/graphics.h	Fri Aug 10 18:19:32 2007 +0000
+++ b/src/graphics.h	Fri Aug 10 18:41:34 2007 +0000
@@ -1211,6 +1211,8 @@
     OCTAVE_GRAPHICS_PROPERTY (octave_value, xdir);
     OCTAVE_GRAPHICS_PROPERTY (octave_value, ydir);
     OCTAVE_GRAPHICS_PROPERTY (octave_value, zdir);
+    OCTAVE_GRAPHICS_PROPERTY (octave_value, xaxislocation);
+    OCTAVE_GRAPHICS_PROPERTY (octave_value, yaxislocation);
     OCTAVE_GRAPHICS_PROPERTY (octave_value, view);
     OCTAVE_GRAPHICS_PROPERTY (octave_value, visible);
     OCTAVE_GRAPHICS_PROPERTY (octave_value, nextplot);