changeset 933:598a3aa40360

[project @ 1994-11-17 04:23:41 by jwe] Initial revision
author jwe
date Thu, 17 Nov 1994 04:23:41 +0000
parents 1c9812d0cf59
children be867ddbe4aa
files scripts/plot/__plr1__.m scripts/plot/__plr2__.m scripts/plot/__plt1__.m scripts/plot/__plt2__.m scripts/plot/__pltopt__.m
diffstat 5 files changed, 473 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/scripts/plot/__plr1__.m
@@ -0,0 +1,43 @@
+# Copyright (C) 1993, 1994 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 2, 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, write to the Free
+# Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+function polar_int_1 (theta, fmt)
+
+  if (nargin != 2)
+    usage ("polar_int_1 (theta, fmt)");
+  endif
+
+  [nr, nc] = size (theta);
+  if (nr == 1)
+    theta = theta';
+    tmp = nr;
+    nr = nc;
+    nc = tmp;
+  endif
+  theta_i = imag (theta);
+  if (any (theta_i))
+    rho = theta_i;
+    theta = real (theta);
+  else
+    rho = theta;
+    theta = (1:nr)';
+  endif
+
+  polar_int_2 (theta, rho, fmt);
+
+endfunction
new file mode 100644
--- /dev/null
+++ b/scripts/plot/__plr2__.m
@@ -0,0 +1,108 @@
+# Copyright (C) 1993, 1994 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 2, 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, write to the Free
+# Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+function polar_int_2 (theta, rho, fmt)
+
+  if (nargin != 3)
+    usage ("polar_int_2 (theta, rho, fmt)");
+  endif
+
+  if (any (imag (theta)))
+    theta = real (theta);
+  endif
+
+  if (any (imag (rho)))
+    rho = real (rho);
+  endif
+
+  if (is_scalar (theta))
+    if (is_scalar (rho))
+      x = rho * cos (theta);
+      y = rho * sin (theta);
+      plot_2_s_s (x, y, fmt);
+    endif
+  elseif (is_vector (theta))
+    if (is_vector (rho))
+      if (length (theta) != length (rho))
+	error ("polar: vector lengths must match");
+      endif
+      if (rows (rho) == 1)
+	rho = rho';
+      endif
+      if (rows (theta) == 1)
+	theta = theta';
+      endif
+      x = rho .* cos (theta);
+      y = rho .* sin (theta);
+      plot_2_v_v (x, y, fmt);
+    elseif (is_matrix (rho))
+      [t_nr, t_nc] = size (theta);
+      if (t_nr == 1)
+	theta = theta';
+	tmp = t_nr;
+	t_nr = t_nc;
+	t_nc = tmp;
+      endif
+      [r_nr, r_nc] = size (rho);
+      if (t_nr != r_nr)
+	rho = rho'
+	tmp = r_nr;
+	r_nr = r_nc;
+	r_nc = tmp;
+      endif
+      if (t_nr != r_nr)
+	error ("polar: vector and matrix sizes must match");
+      endif
+      x = diag (cos (theta)) * rho;
+      y = diag (sin (theta)) * rho;
+      plot_2_v_m (x, y, fmt);
+    endif
+  elseif (is_matrix (theta))
+    if (is_vector (rho))
+      [r_nr, r_nc] = size (rho);
+      if (r_nr == 1)
+	rho = rho';
+	tmp = r_nr;
+	r_nr = r_nc;
+	r_nc = tmp;
+      endif
+      [t_nr, t_nc] = size (theta);
+      if (r_nr != t_nr)
+	theta = rho'
+	tmp = t_nr;
+	t_nr = t_nc;
+	t_nc = tmp;
+      endif
+      if (r_nr != t_nr)
+	error ("polar: vector and matrix sizes must match");
+      endif
+      diag_r = diag (r);
+      x = diag_r * cos (theta);
+      y = diag_r * sin (theta);
+      plot_2_m_v (x, y, fmt);
+    elseif (is_matrix (rho))
+      if (size (rho) != size (theta))
+	error ("polar: matrix dimensions must match");
+      endif
+      x = rho .* cos (theta);
+      y = rho .* sin (theta);
+      plot_2_m_m (x, y, fmt);
+    endif
+  endif
+
+endfunction
new file mode 100644
--- /dev/null
+++ b/scripts/plot/__plt1__.m
@@ -0,0 +1,51 @@
+# Copyright (C) 1994 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 2, 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, write to the Free
+# Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+function plot_int_1 (x1, fmt)
+
+  if (nargin < 1 || nargin > 2)
+    usage ("plot_int_1 (x1, fmt)");
+  endif
+
+  if (nargin == 1)
+    fmt = "";
+  endif
+
+  if (! isstr (fmt))
+    error ("plot_int_1: fmt must be a string");
+  endif
+
+  [nr, nc] = size (x1);
+  if (nr == 1)
+    x1 = x1';
+    tmp = nr;
+    nr = nc;
+    nc = tmp;
+  endif
+  x1_i = imag (x1);
+  if (any (any (x1_i)))
+    x2 = x1_i;
+    x1 = real (x1);
+  else
+    x2 = x1;
+    x1 = (1:nr)';
+  endif
+
+  plot_int_2 (x1, x2, fmt);
+
+endfunction
new file mode 100644
--- /dev/null
+++ b/scripts/plot/__plt2__.m
@@ -0,0 +1,57 @@
+# Copyright (C) 1994 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 2, 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, write to the Free
+# Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+function plot_int_2 (x1, x2, fmt)
+
+  if (nargin < 2 || nargin > 3)
+    usage ("plot_int_2 (x1, x2, fmt)");
+  endif
+
+  if (nargin == 2)
+    fmt = "";
+  endif
+
+  if (! isstr (fmt))
+    error ("plot_int_2: fmt must be a string");
+  endif
+
+  if (any (any (imag (x1))))
+    x1 = real (x1);
+  endif
+  if (any (any (imag (x2))))
+    x2 = real (x2);
+  endif
+  if (is_scalar (x1))
+    if (is_scalar (x2))
+      plot_2_s_s (x1, x2, fmt);
+    endif
+  elseif (is_vector (x1))
+    if (is_vector (x2))
+      plot_2_v_v (x1, x2, fmt);
+    elseif (is_matrix (x2))
+      plot_2_v_m (x1, x2, fmt);
+    endif
+  elseif (is_matrix (x1))
+    if (is_vector (x2))
+      plot_2_m_v (x1, x2, fmt);
+    elseif (is_matrix (x2))
+      plot_2_m_m (x1, x2, fmt);
+    endif
+  endif
+
+endfunction
new file mode 100644
--- /dev/null
+++ b/scripts/plot/__pltopt__.m
@@ -0,0 +1,214 @@
+# Copyright (C) 1994 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 2, 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, write to the Free
+# Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+# Originally written by Rick Niles <niles@axp745.gsfc.nasa.gov>.
+
+function fmt = plot_opt (caller, opt)
+
+# usage: fmt = plot_opt (caller, opt)
+#
+# Decode plot option strings.
+#
+# If OPT is a valid option string, return a string of the form "w l 2"
+# ("with lines 2").  Uses abbreviations for the options to avoid
+# overrunning gnuplot's command line buffer unnecessarily.
+#
+# OPT can currently be some combination of the following:
+#
+#   "-"   for lines plot style (default).
+#   "."   for dots plot style.
+#   "@"   for points plot style.
+#   "-@"  for linespoints plot style.
+#   "^"   for impulses plot style.
+#   "L"   for steps plot style.
+#   "#"   for boxes plot style.
+#   "~"   for errorbars plot style.
+#   "#~"  for boxerrorbars plot style.
+#   "n"   with n in 1-6 (wraps at 8), plot color
+#   "nm"  with m in 1-6 (wraps at 6), point style (only valid with "@" or "-@")
+#   "c"   where c is one of ["r", "g", "b", "m", "c", "w"] colors.
+#
+#   Special points formats:
+#
+#      "+", "*", "o", "x" will display points in that style.
+#
+#   The legend may be fixed to include the name of the variable
+#   plotted in some future version of Octave.
+#
+#   The color line styles have the following meanings on terminals
+#   that do not support color.
+#
+#     Number  Gnuplot colors     (lines)points style
+#       1       red                 "*"
+#       2       green               "+"
+#       3       blue                "o"
+#       4       magenta             "x"
+#       5       cyan                house
+#       6       brown               there exists
+
+  set_color = 0;
+  set_symbol = 0;
+  set_lines = 0;
+  set_dots = 0;
+  set_points = 0;
+  set_impulses = 0;
+  set_steps = 0;
+  set_boxes = 0;
+  set_errbars = 0;
+  more = 1;
+
+  WITH = "w";
+  LINES = "l";
+  LINESPOINTS = "linesp";
+  BOXERRORBARS = "boxer";
+  BOXES = "boxes";
+  POINTS = "p";
+  DOTS = "d";
+  IMPULSES = "i";
+  STEPS = "s";
+  ERRORBARS = "e";
+
+  if (nargin != 2)
+    usage ("plot_opt (opt)");
+  endif
+
+  if (! isstr (opt))
+    error ("plot_opt: argument must be a string");
+  endif
+
+  while (more)
+
+# First get next char.
+
+    if (max (size (opt)) > 1)
+      [char, opt] = sscanf (opt, "%c %s");
+    else
+      char = opt;
+      more = 0;
+    endif
+
+# Now set flags based on char.
+
+    if (strcmp (char, "-"))
+      set_lines = 1;
+    elseif (strcmp (char, "."))
+      set_dots  = 1;
+    elseif (strcmp (char, "@"))
+      set_points = 1;
+    elseif (strcmp (char, "^"))
+      set_impulses = 1;
+    elseif (strcmp (char, "L"))
+      set_steps = 1;
+    elseif (strcmp (char, "~"))
+      set_errbars = 1;
+    elseif (strcmp (char, "#"))
+      set_boxes = 1;
+    elseif (strcmp (char, "0") || strcmp (char, "1") ...
+            || strcmp (char, "2") || strcmp (char, "3") ...
+            || strcmp (char, "4") || strcmp (char, "5") ...
+            || strcmp (char, "6") || strcmp (char, "7") ...
+            || strcmp (char, "8") || strcmp (char, "9"))
+      if (set_color)
+	set_points = 1;
+	symbol = char;
+	set_symbol = 1;
+      else
+	color = char;
+	set_color = 1;
+      endif
+    elseif (strcmp (char, "r"))
+      set_color = 1;
+      color = "1";
+    elseif (strcmp (char, "g"))
+      set_color = 1;
+      color = "2";
+    elseif (strcmp (char, "b"))
+      set_color = 1;
+      color = "3";
+    elseif (strcmp (char, "m"))
+      set_color = 1;
+      color = "4";
+    elseif (strcmp (char, "c"))
+      set_color = 1;
+      color = "5";
+    elseif (strcmp (char, "w"))
+      set_color = 1;
+      color = "6";
+    elseif (strcmp (char, "*"))
+      set_points = 1;
+      set_symbol = 1;
+      symbol = "1";
+    elseif (strcmp (char, "+"))
+      set_points = 1;
+      set_symbol = 1;
+      symbol = "2";
+    elseif (strcmp (char, "o"))
+      set_points = 1;
+      set_symbol = 1;
+      symbol = "3";
+    elseif (strcmp (char, "x"))
+      set_points = 1;
+      set_symbol = 1;
+      symbol = "4";
+    else
+      error (sprintf ("%s: unrecognized format character %s", caller, char));
+    endif
+  endwhile
+
+# Now create format string.
+
+  fmt = WITH;
+
+  if (set_lines)
+    if (set_points)
+      fmt = strcat (fmt, " ", LINESPOINTS);
+    else
+      fmt = strcat (fmt, " ", LINES);
+    endif
+  elseif (set_boxes)
+    if (set_errbars)
+      fmt = strcat (fmt, " ", BOXERRORBARS);
+    else
+      fmt = strcat (fmt, " ", BOXES);
+    endif
+  elseif (set_points)
+    fmt = strcat (fmt, " ", POINTS);
+  elseif (set_dots)
+    fmt = strcat (fmt, " ", DOTS);
+  elseif (set_impulses)
+    fmt = strcat (fmt, " ", IMPULSES);
+  elseif (set_steps)
+    fmt = strcat (fmt, " ", STEPS);
+  elseif (set_errbars)
+    fmt = strcat (fmt, " ", ERRORBARS);
+  endif
+
+  if (strcmp (fmt, WITH))
+    fmt = strcat (fmt, " ", LINES);
+  endif
+
+  if (set_color)
+    fmt = strcat (fmt, " ", color);
+    if (set_symbol)
+      fmt = strcat (fmt, " ", symbol);
+    endif
+  elseif (set_symbol)
+    fmt = strcat (fmt, " 1 ", symbol);
+  endif
+
+endfunction