Re: Axes object in Octave 2.9.12 and other plotting questions
Daniel J Sebald <[email protected]> Tue, 12 Jun 2007 15:04:56 -0500
| Newsgroups | gmane.comp.gnu.octave.graphics |
|---|---|
| Message-ID | <[email protected]> |
Mark B. wrote:
> Hello,
>
> I have a script in Matlab (v 7) that plots a graph with two series and
> that assigns "tick labels" to axis X. It is something like this (for
> only one series):
>
> %%%%%%%%%%%%%%%
> figure1 = figure;
>
> axes1 = axes('Parent',figure1,...
> 'xticklabel',
> {'02/13';'02/14';'02/15';'02/16';'02/17';'02/18';'02/19';'02/20';'02/21';'02/22'},...
> 'xtick',[0 24 48 72 96 120 144 168 192 216],...
> 'position',[0.13 0.11 0.7943 0.815]);
> box('on');
> hold all
>
> plot1 = plot(X1,YMatrix1);
>
> set(plot1,'DisplayName','The name');
> set(plot1,'Color',[0 0 1]);
>
> legend1 = legend(axes1,'show');
> set(legend1,'Location','NorthWest');
>
> %%%%%%%%%%%%%%%
>
> There are some problem with this script in Octave:
>
> 1) hold all. Runs normally in Matlab but Gives an error in Octave.
> Commenting that line makes the error go away but no tick labels are
> displayed either in Matlab or Octave
>
> 2) warning: set: invalid property `DisplayName' in Octave
>
> 3) error: legend: expecting argument to be a character string
>
> My questions are:
>
> - How can I assign tick labels to axis X that works in Octave (and
> also if possible to be compatible with Matlab)
>
> - How can I set the DisplayName of the series that I am plotting?
>
> - How can I assign a legend to an axes object and set its position and
> text?
Mark,
Graphics code is in a transitional period and there are some limitations at the
moment. Some of the syntax you used simply isn't supported. (Type "type
legend" to see.) This should not be difficult to update, and if you'd like to
offer to do so, please do.
If you are using gnuplot as the underlying graphics for Octave, there is support
for any key position you can wish to have (interior corners, exterior corners,
manual placement):
http://gnuplot.sourceforge.net/demo_4.3/key.html
There may need to be some alteration to __go_draw_axes__ if the following
positions don't quite cover everything.
case -1
pos = "right bottom";
inout = "outside";
case 1
pos = "right top";
case 2
pos = "left top";
case 3
pos = "left bottom";
case 4
pos = "right bottom";
otherwise
There is an inherent limitation currently in gnuplot to do only a single key.
If multiple legends is what you want, that would be a feature request to gnuplot.
Regards,
Dan