Mercurial > hg > octave-avbm
changeset 3718:65c6da68ddb3
[project @ 2000-09-08 06:50:02 by jwe]
author | jwe |
---|---|
date | Fri, 08 Sep 2000 06:50:23 +0000 |
parents | e3501697c995 |
children | 744755872311 |
files | scripts/ChangeLog scripts/plot/__errplot__.m scripts/plot/errorbar.m |
diffstat | 3 files changed, 316 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,7 +1,7 @@ -2000-09-08 John W. Eaton <jwe@bevo.che.wisc.edu> - 2000-09-08 Teemu Ikonen <tpikonen@pcu.helsinki.fi> + * plot/errorbar.m, plot/__errplot__.m: New functions. + * plot/mesh.m: Also set nologscale before plotting. * plot/__pltopt1__.m: Handle xerrorbars, yerrorbars, and xyerrorbars instead of just errorbars.
new file mode 100644 --- /dev/null +++ b/scripts/plot/__errplot__.m @@ -0,0 +1,130 @@ +## Copyright (C) 2000, Teemu Ikonen +## +## 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, 59 Temple Place - Suite 330, Boston, MA +## 02111-1307, USA. + +## -*- texinfo -*- +## @deftypefn {Function File} {} __errplot__ (@var{args}) +## Really plot errorbar plots. User interface in function errorbar. +## +## @example +## __errplot__ (@var{arg1}, @var{arg2}, ..., @var{fmt}) +## @end example +## +## @end deftypefn +## @seealso{semilogx, semilogy, loglog, polar, mesh, contour, __pltopt__ +## bar, stairs, errorbar, gplot, gsplot, replot, xlabel, ylabel, and title} + +## Created: 18.7.2000 +## Author: Teemu Ikonen <tpikonen@pcu.helsinki.fi> +## Keywords: errorbar, plotting + +function __errplot__ (...) + + if (nargin < 3) # atleast two data arguments needed + usage ("__errplot__ (arg1, ..., fmt)"); + endif + + fstr = " "; + + ndata = 0; + + while (nargin--) + a = va_arg (); + if (! isstr (a)) + ndata++; + eval (sprintf ("arg%d = a;", ndata)); + else + fstr = a; + endif + endwhile + + fmt = __pltopt__ ("__errplot__", fstr); + + nplots = size (arg1, 2); + len = size (arg1, 1); + + if (ndata == 2) + for i = 1:nplots, + tmp = [(1:len)', arg1(:,i), arg2(:,i)]; + cmd = sprintf ("gplot tmp %s", fmt(min(i, rows(fmt)), :) ); + eval (cmd); + end + elseif (ndata == 3) + for i = 1:nplots, + tstr = "tmp =[arg1(:,i)"; + for j = 2:ndata, + tstr = [tstr, sprintf(", arg%d(:,i)", j)]; + endfor + tstr = [tstr, "];"]; + eval (tstr); + cmd = sprintf ("gplot tmp %s", fmt(min(i, rows(fmt)), :) ); + eval (cmd); + endfor + elseif (ndata == 4) + for i = 1:nplots, # this is getting ugly + if (index (fmt, "boxxy") || index (fmt, "xyerr")) + tstr = "tmp = [arg1(:,i), arg2(:,i), arg3(:,i), arg4(:,i)];"; + elseif (index (fmt, "xerr")) + tstr = "tmp = [arg1(:,i), arg2(:,i), arg1(:,i)-arg3(:,i), arg1(:,i)+arg4(:,i)];"; + else + tstr = "tmp = [arg1(:,i), arg2(:,i), arg2(:,i)-arg3(:,i), arg2(:,i)+arg4(:,i)];"; + endif + eval (tstr); + cmd = sprintf ("gplot tmp %s", fmt(min(i, rows(fmt)), :) ); + eval (cmd); + endfor + elseif (ndata == 6) + for i = 1:nplots, + tstr = "tmp = [arg1(:,i), arg2(:,i), arg1(:,i)-arg3(:,i), arg1(:,i)+arg4(:,i), arg2(:,i)-arg5(:,i), arg2(:,i)+arg6(:,i)];"; + eval (tstr); + cmd = sprintf ("gplot tmp %s", fmt(min(i, rows(fmt)), :) ); + eval (cmd); + endfor + else + for i = 1:nplots, + tstr = "tmp = [arg1(:,i)"; + for j = 2:ndata, + tstr = [tstr, sprintf(", arg%d(:,i)", j)]; + endfor + tstr = [tstr, "];"]; + eval (tstr); + cmd = sprintf ("gplot tmp %s", fmt(min(i, rows(fmt)), :) ); + eval (cmd); + endfor + endif + + ## if (ndata == 2) + ## for i = 1:nplots, + ## tmp = [(1:len)', arg1(:,i), arg2(:,i)]; + ## cmd = sprintf ("gplot tmp %s", fmt(min(i, rows(fmt)), :) ); + ## eval (cmd); + ## endfor + ## else + ## for i = 1:nplots, + ## tstr = "tmp =[arg1(:,i)"; + ## for j = 2:ndata, + ## tstr = [tstr, sprintf(", arg%d(:,i)", j)]; + ## endif + ## tstr = [tstr, "];"]; + ## eval (tstr); + ## cmd = sprintf ("gplot tmp %s", fmt(min(i, rows(fmt)), :) ); + ## eval (cmd); + ## endfor + ## endif + +endfunction
new file mode 100644 --- /dev/null +++ b/scripts/plot/errorbar.m @@ -0,0 +1,184 @@ +## Copyright (C) 2000, Teemu Ikonen +## +## 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, 59 Temple Place - Suite 330, Boston, MA +## 02111-1307, USA. + +## -*- texinfo -*- +## @deftypefn {Function File} {} errorbar (@var{args}) +## This function produces two-dimensional plots with errorbars. Many +## different combinations of arguments are possible. The simplest form is +## +## @example +## errorbar (@var{y}, @var{ey}) +## @end example +## +## @noindent +## where the first argument is taken as the set of @var{y} coordinates +## and the second argument @var{ey} is taken as the errors of the +## @var{y} values. @var{x} coordinates are taken to be the indices +## of the elements, starting with 1. +## +## If more than two arguments are given, they are interpreted as +## +## @example +## errorbar (@var{x}, @var{y}, ..., @var{fmt} ...) +## @end example +## +## @noindent +## where after @var{x} and @var{y} there can be up to four error +## parameters such as @var{ey}, @var{ex}, @var{ly}, @var{uy} etc., +## depending on the plot type. Any number of argument sets may appear, +## as long as they are separated with a format string @var{fmt}. +## +## If @var{y} is a matrix, @var{x} and error parameters must also be matrices +## having same dimensions. The columns of @var{y} are plotted versus the +## corresponding columns of @var{x} and errorbars are drawn from +## the corresponding columns of error parameters. +## +## If @var{fmt} is missing, yerrorbars ("~") plot style +## is assumed. +## If the @var{fmt} argument is supplied, it is interpreted as in +## normal plots (See __pltopt__). In addition the following +## plot styles are supported by errorbar: +## +## @table @samp +## @item ~ +## Set yerrorbars plot style (default). +## +## @item > +## Set xerrorbars plot style. +## +## @item ~> +## Set xyerrorbars plot style. +## +## @item # +## Set boxes plot style. +## +## @item #~ +## Set boxerrorbars plot style. +## +## @item #~> +## Set boxxyerrorbars plot style. +## +## @end table +## +## Examples: +## +## @example +## errorbar(@var{x}, @var{y}, @var{ex}, ">") +## @end example +## +## xerrorbar plot of @var{y} versus @var{x} with @var{x} errorbars drawn from +## @var{x}-@var{ex} to @var{x}+@var{ex}. +## +## @example +## errorbar(@var{x}, @var{y1}, @var{ey}, "~", @var{x}, @var{y2}, @var{ly}, @var{uy}) +## @end example +## +## Two yerrorbar plots with @var{y1} and @var{y2} versus @var{x}. +## Errorbars for @var{y1} are drawn from @var{y1}-@var{ey} to +## @var{y1}+@var{ey}, errorbars for @var{y2} from @var{y2}-@var{ly} to +## @var{y2}+@var{uy}. +## +## @example +## errorbar(@var{x}, @var{y}, @var{lx}, @var{ux}, @var{ly}, @var{uy}, "~>") +## @end example +## +## xyerrorbar plot of @var{y} versus @var{x} where @var{x} errorbars +## are drawn from @var{x}-@var{lx} to @var{x}+@var{ux} and @var{y} errorbars +## from @var{y}-@var{ly} to @var{y}+@var{uy}. +## +## @end deftypefn +## @seealso{semilogx, semilogy, loglog, polar, mesh, contour, __pltopt__, +## bar, stairs, gplot, gsplot, replot, xlabel, ylabel, and title} + +## Created: 18.7.2000 +## Author: Teemu Ikonen <tpikonen@pcu.helsinki.fi> +## Keywords: errorbar, plotting + +function errorbar (...) + + if (nargin < 2) + usage ("errorbar (...)"); + endif + + save_hold = ishold; + unwind_protect + if (! ishold) + clg () + endif + hold ("on"); + while (nargin) + a = va_arg (); + nargin--; + if (is_vector (a)) + a = a(:); + elseif (is_matrix (a)); + ; + else + usage ("errorbar (...)"); + endif + sz = size (a); + ndata = 1; + arg1 = a; + fmt = " "; + while (nargin) + nargin--; + a = va_arg (); + if (isstr (a)) + fmt = a; + cmd = "__errplot__ (arg1"; + for i = 2:ndata, + cmd = [cmd, sprintf(", arg%d",i)]; + endfor + cmd = [cmd, ", fmt);"]; + eval (cmd); + break; + elseif (is_vector (a)) + a = a(:); + elseif (is_matrix (a)) + ; + else + error ("wrong argument types"); + endif + if (size (a) != sz) + error ("argument sizes do not match"); + endif + ndata++; + eval (sprintf ("arg%d = a;", ndata)); + if (ndata > 6) + error ("too many arguments to a plot"); + endif + endwhile + endwhile + + if (! isstr (a)) + fmt = " "; + cmd = "__errplot__(arg1"; + for i = 2:ndata, + cmd = [cmd, sprintf(", arg%d",i)]; + endfor + cmd = [cmd, ", fmt);"]; + eval (cmd); + endif + unwind_protect_cleanup + if (! save_hold) + hold ("off"); + endif + end_unwind_protect + +endfunction