Legend and LineStyle with Plotyy
David Bateman
David.Bateman at motorola.com
Mon Sep 8 07:01:51 CDT 2008
Sorry for the delay in responding. Issues with plotyy were one of the
things I wanted to address, before a 3.2.0 release of Octave, and so I
just stuck your mail on my todo pile. However, I now suspect that your
problems are harder to address than I'd thought.
Firstly, I propose the simpler example code
x = 0:0.1:2*pi;
y1 = sin (x);
y2 = exp (x - 1);
[ax, h1, h2] = plotyy (x, y1, x - 1, y2, @plot, @semilogy);
set(h1,'LineStyle','-')
set(h2,'LineStyle','--')
legend([h1, h2], 'y1', 'y2')
to demonstrate the issues. The linestyle issue is in fact a limitation
of gnuplot and there is not much we can do about it at this point. See
the comment in __go_draw_axes__.m that states
## FIXME -- linetype is currently broken, since it disables the
## gnuplot default dashed and solid linestyles with the only
## benefit of being able to specify '--' and get a single sized
## dashed line of identical dash pattern for all called this way.
## All dash patterns are a subset of "with lines" and none of the
## lt specifications will correctly propagate into the x11 terminal
## or the print command. Therefore, it is currently disabled in
## order to allow print (..., "-dashed") etc. to work correctly.
## if (! isempty (lt))
## fprintf (plot_stream, " linetype %s", lt);
## found_style = true;
## endif
so as the comment states the gnuplot terminal does not respect the
dashed linestyles, and the code to do it (ie 4 lines) is commented out.
You can still be dashed lines in the printed plots for your publications
with the "-dashed" option to the print command.
As for the legend, there is an incompatibility in how Octave and Matlab
treat legends.. In Octave a legend is assoicated with an axis, whereas
in Matlab a legend is a new axis object with the keys printed. The
Octave way of doing it allows easy interfacing with the gnuplot legend
code. The downside of Octave's choice is that you'd need a legend that
is different for each of the axes of the plotyy command. In Octave 3.0.2
you might try something like
x = 0:0.1:2*pi;
y1 = sin (x);
y2 = exp (x - 1);
[ax, h1, h2] = plotyy (x, y1, x - 1, y2, @plot, @semilogy);
axes(ax(1))
legend ('y1')
axes(ax(2))
legend('y2','location','southeast')
Regards
David
--
David Bateman David.Bateman at motorola.com
Motorola Labs - Paris +33 1 69 35 48 04 (Ph)
Parc Les Algorithmes, Commune de St Aubin +33 6 72 01 06 33 (Mob)
91193 Gif-Sur-Yvette FRANCE +33 1 69 35 77 01 (Fax)
The information contained in this communication has been classified as:
[x] General Business Information
[ ] Motorola Internal Use Only
[ ] Motorola Confidential Proprietary
More information about the Help-octave
mailing list