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