# HG changeset patch # User jwe # Date 785046221 0 # Node ID 598a3aa40360f75910ed05a06209cc42ccb341da # Parent 1c9812d0cf59184c3a4ee7292673ef2e81b7a8b2 [project @ 1994-11-17 04:23:41 by jwe] Initial revision diff --git a/scripts/plot/__plr1__.m b/scripts/plot/__plr1__.m 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 diff --git a/scripts/plot/__plr2__.m b/scripts/plot/__plr2__.m 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 diff --git a/scripts/plot/__plt1__.m b/scripts/plot/__plt1__.m 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 diff --git a/scripts/plot/__plt2__.m b/scripts/plot/__plt2__.m 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 diff --git a/scripts/plot/__pltopt__.m b/scripts/plot/__pltopt__.m 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 . + +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