[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Changing the entries in the legend
From: |
Guido Dietz |
Subject: |
Re: Changing the entries in the legend |
Date: |
Fri, 28 Jul 95 17:48:07 +0200 |
--------
Steven Harp <address@hidden> wrote:
> Is it possible to change the entries in the legend from line 1 line 2 etc to
> whatever anything etc using Matlab style plotting ? I have seen methods for
> doing this in gnuplot but am hoping there is a method that goes with Matlab
> style plotting.
I changed 1.1.1/m/plot/plot_opt.m: Now you can plot e.g. like
plot(x,y,'-r(Hello world)');
and the legend will show 'Hello world'. If you omit the string like
plot(x,y,'-r()');
no legend will be shown for this line. If you must show some '()' you can do
this by
plot(x,y,'-r[A(1)]');
or
plot(x,y,'-r{A(1)}');
The only think you cannot do is a legend with all the three types of these.
G.
plot_opt.m:
--------
# Copyright (C) 1994, 1995 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 <address@hidden>.
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.
# Title format:
#
# The key can be given enclosed in parathesis following the format
# descriptor: "(Title1)"
#
# 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 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;
set_title = 0;
more = 1;
WITH = "w";
LINES = "l";
LINESPOINTS = "linesp";
BOXERRORBARS = "boxer";
BOXES = "boxes";
POINTS = "p";
DOTS = "d";
IMPULSES = "i";
STEPS = "s";
ERRORBARS = "e";
TITLE = "t";
if (nargin != 2)
usage ("plot_opt (opt)");
endif
if (! isstr (opt))
error ("plot_opt: argument must be a string");
endif
title = TITLE;
tmp=implicit_str_to_num_ok;
implicit_str_to_num_ok="true";
while (more)
# First get next char.
if (max (size (opt)) > 1)
char = sscanf (opt, "%c");
dum = opt+0;
opt = setstr(dum (2:max (size (opt))));
else
char = opt;
more = 0;
endif
# Now set flags based on char.
if (set_title)
if (strcmp (char, close_title))
set_title = 0;
title = strcat (title, "\"");
else
title = strcat (title, char);
endif
elseif (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";
elseif (strcmp (char, "(") || strcmp (char, "{") || strcmp (char, "["))
set_title = 1;
if (strcmp (char, "{"))
close_title = "}";
elseif (strcmp (char, "["))
close_title = "]";
else
close_title = ")";
endif;
title = strcat (title, " \"");
else
error (sprintf ("%s: unrecognized format character %s", caller, char));
endif
endwhile
implicit_str_to_num_ok=tmp;
if (set_title)
error (sprintf ("%s: title not closed", caller));
endif
# 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
if (!strcmp (title, TITLE))
fmt = strcat (fmt, " ", title);
endif
endfunction