home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / scripts / plot / plot_opt.m < prev    next >
Text File  |  1996-09-28  |  6KB  |  215 lines

  1. # Copyright (C) 1994, 1995 John W. Eaton
  2. #
  3. # This file is part of Octave.
  4. #
  5. # Octave is free software; you can redistribute it and/or modify it
  6. # under the terms of the GNU General Public License as published by the
  7. # Free Software Foundation; either version 2, or (at your option) any
  8. # later version.
  9. #
  10. # Octave is distributed in the hope that it will be useful, but WITHOUT
  11. # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12. # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13. # for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with Octave; see the file COPYING.  If not, write to the Free
  17. # Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  
  19. # Originally written by Rick Niles <niles@axp745.gsfc.nasa.gov>.
  20.  
  21. function fmt = plot_opt (caller, opt)
  22.  
  23. # usage: fmt = plot_opt (caller, opt)
  24. #
  25. # Decode plot option strings.
  26. #
  27. # If OPT is a valid option string, return a string of the form "w l 2"
  28. # ("with lines 2").  Uses abbreviations for the options to avoid
  29. # overrunning gnuplot's command line buffer unnecessarily.
  30. #
  31. # OPT can currently be some combination of the following:
  32. #
  33. #   "-"   for lines plot style (default).
  34. #   "."   for dots plot style.
  35. #   "@"   for points plot style.
  36. #   "-@"  for linespoints plot style.
  37. #   "^"   for impulses plot style.
  38. #   "L"   for steps plot style.
  39. #   "#"   for boxes plot style.
  40. #   "~"   for errorbars plot style.
  41. #   "#~"  for boxerrorbars plot style.
  42. #   "n"   with n in 1-6 (wraps at 8), plot color
  43. #   "nm"  with m in 1-6 (wraps at 6), point style (only valid with "@" or "-@")
  44. #   "c"   where c is one of ["r", "g", "b", "m", "c", "w"] colors.
  45. #
  46. #   Special points formats:
  47. #
  48. #      "+", "*", "o", "x" will display points in that style.
  49. #
  50. #   The legend may be fixed to include the name of the variable
  51. #   plotted in some future version of Octave.
  52. #
  53. #   The color line styles have the following meanings on terminals
  54. #   that support color.
  55. #
  56. #     Number  Gnuplot colors     (lines)points style
  57. #       1       red                 "*"
  58. #       2       green               "+"
  59. #       3       blue                "o"
  60. #       4       magenta             "x"
  61. #       5       cyan                house
  62. #       6       brown               there exists
  63.  
  64.   set_color = 0;
  65.   set_symbol = 0;
  66.   set_lines = 0;
  67.   set_dots = 0;
  68.   set_points = 0;
  69.   set_impulses = 0;
  70.   set_steps = 0;
  71.   set_boxes = 0;
  72.   set_errbars = 0;
  73.   more = 1;
  74.  
  75.   WITH = "w";
  76.   LINES = "l";
  77.   LINESPOINTS = "linesp";
  78.   BOXERRORBARS = "boxer";
  79.   BOXES = "boxes";
  80.   POINTS = "p";
  81.   DOTS = "d";
  82.   IMPULSES = "i";
  83.   STEPS = "s";
  84.   ERRORBARS = "e";
  85.  
  86.   if (nargin != 2)
  87.     usage ("plot_opt (opt)");
  88.   endif
  89.  
  90.   if (! isstr (opt))
  91.     error ("plot_opt: argument must be a string");
  92.   endif
  93.  
  94.   while (more)
  95.  
  96. # First get next char.
  97.  
  98.     if (max (size (opt)) > 1)
  99.       [char, opt] = sscanf (opt, "%c %s");
  100.     else
  101.       char = opt;
  102.       more = 0;
  103.     endif
  104.  
  105. # Now set flags based on char.
  106.  
  107.     if (strcmp (char, "-"))
  108.       set_lines = 1;
  109.     elseif (strcmp (char, "."))
  110.       set_dots  = 1;
  111.     elseif (strcmp (char, "@"))
  112.       set_points = 1;
  113.     elseif (strcmp (char, "^"))
  114.       set_impulses = 1;
  115.     elseif (strcmp (char, "L"))
  116.       set_steps = 1;
  117.     elseif (strcmp (char, "~"))
  118.       set_errbars = 1;
  119.     elseif (strcmp (char, "#"))
  120.       set_boxes = 1;
  121.     elseif (strcmp (char, "0") || strcmp (char, "1") ...
  122.             || strcmp (char, "2") || strcmp (char, "3") ...
  123.             || strcmp (char, "4") || strcmp (char, "5") ...
  124.             || strcmp (char, "6") || strcmp (char, "7") ...
  125.             || strcmp (char, "8") || strcmp (char, "9"))
  126.       if (set_color)
  127.     set_points = 1;
  128.     symbol = char;
  129.     set_symbol = 1;
  130.       else
  131.     color = char;
  132.     set_color = 1;
  133.       endif
  134.     elseif (strcmp (char, "r"))
  135.       set_color = 1;
  136.       color = "1";
  137.     elseif (strcmp (char, "g"))
  138.       set_color = 1;
  139.       color = "2";
  140.     elseif (strcmp (char, "b"))
  141.       set_color = 1;
  142.       color = "3";
  143.     elseif (strcmp (char, "m"))
  144.       set_color = 1;
  145.       color = "4";
  146.     elseif (strcmp (char, "c"))
  147.       set_color = 1;
  148.       color = "5";
  149.     elseif (strcmp (char, "w"))
  150.       set_color = 1;
  151.       color = "6";
  152.     elseif (strcmp (char, "*"))
  153.       set_points = 1;
  154.       set_symbol = 1;
  155.       symbol = "1";
  156.     elseif (strcmp (char, "+"))
  157.       set_points = 1;
  158.       set_symbol = 1;
  159.       symbol = "2";
  160.     elseif (strcmp (char, "o"))
  161.       set_points = 1;
  162.       set_symbol = 1;
  163.       symbol = "3";
  164.     elseif (strcmp (char, "x"))
  165.       set_points = 1;
  166.       set_symbol = 1;
  167.       symbol = "4";
  168.     else
  169.       error (sprintf ("%s: unrecognized format character %s", caller, char));
  170.     endif
  171.   endwhile
  172.  
  173. # Now create format string.
  174.  
  175.   fmt = WITH;
  176.  
  177.   if (set_lines)
  178.     if (set_points)
  179.       fmt = strcat (fmt, " ", LINESPOINTS);
  180.     else
  181.       fmt = strcat (fmt, " ", LINES);
  182.     endif
  183.   elseif (set_boxes)
  184.     if (set_errbars)
  185.       fmt = strcat (fmt, " ", BOXERRORBARS);
  186.     else
  187.       fmt = strcat (fmt, " ", BOXES);
  188.     endif
  189.   elseif (set_points)
  190.     fmt = strcat (fmt, " ", POINTS);
  191.   elseif (set_dots)
  192.     fmt = strcat (fmt, " ", DOTS);
  193.   elseif (set_impulses)
  194.     fmt = strcat (fmt, " ", IMPULSES);
  195.   elseif (set_steps)
  196.     fmt = strcat (fmt, " ", STEPS);
  197.   elseif (set_errbars)
  198.     fmt = strcat (fmt, " ", ERRORBARS);
  199.   endif
  200.  
  201.   if (strcmp (fmt, WITH))
  202.     fmt = strcat (fmt, " ", LINES);
  203.   endif
  204.  
  205.   if (set_color)
  206.     fmt = strcat (fmt, " ", color);
  207.     if (set_symbol)
  208.       fmt = strcat (fmt, " ", symbol);
  209.     endif
  210.   elseif (set_symbol)
  211.     fmt = strcat (fmt, " 1 ", symbol);
  212.   endif
  213.  
  214. endfunction
  215.