octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Matlab compatible legends for FLTK/Gnuplot backends?


From: Ben Abbott
Subject: Re: Matlab compatible legends for FLTK/Gnuplot backends?
Date: Mon, 06 Sep 2010 13:25:47 -0400

On Sep 6, 2010, at 12:20 PM, David Bateman wrote:

> Ben Abbott wrote:
>> On Sep 5, 2010, at 11:02 PM, David Bateman wrote:
>> 
>>  
>>> I'm not seeing this with gnuplot 4.2.6. Though I do with gnuplot 4.4.0. If 
>>> you add
>>> 
>>> set (gca(), "activepositionproperty", "outerposition")
>>> 
>>> after the call to legend in gnuplot 4.4.0, I get the same behavior as for 
>>> gnuplot 4.2.6 where the legend is compressed and badly placed. I'd say it 
>>> looks like an issue in __go_draw_* code for the parsing of the position and 
>>> outerposition parameters for use with gnuplot rather than in the legend 
>>> code.
>>> 
>>> D.
>>>    
>> 
>> I ran some tests changing the activepositionproperty for both axes and for 
>> each version of gnuplot (see my attached plots).
>> 
>> If you change the snippet below ....
>> 
>>        ## FIXME A hack for gnuplot. God knows why this is needed
>>        if (strcmp (get (fig, "__backend__"), "gnuplot"))
>>          set (ca(1), "activepositionproperty", "position");
>>        endif
>> 
>> ... to ...
>> 
>>          set (hlegend, "activepositionproperty", "position");
>> 
>> The legend looks correct. This is also the value that Matlab assigns to 
>> activepositionproperty for the legend. 
>> However, that doesn't address the problem seen when running gnuplot 4.4, 
>> setting the gca's activeposition  to "position" and the legend's 
>> activepositon to "outerposition". I'll take a look at that.
>> 
>> Ben
>> 
>>  
> I'm sizing the legend relative to the axis "position" property in all cases, 
> so that things like "southoutside" might be able to align the edges of the 
> key with the plot (though it doesn't yet). The legend itself is placed 
> relative to the "outerposition" of the axis if the legend is "outside" of the 
> plot. Note that I was setting the legend "position" and "outerposition" are 
> being set to  the same value in the legend axis as there are no axis labels, 
> title, ticks etc to include. Looking at the way position and outerposition 
> are autoupdating between themselves, this is probably not the right thing to 
> do.
> 
> However, with gnuplot
> 
> plot(1,10); set (gca(), "activiepositionproperty", "position")
> 
> doesn't give the same plot size as
> 
> plot(1,10); set (gca(), "activiepositionproperty", "outerposition")
> 
> which if I'm reading
> 
> http://www.mathworks.com/help/techdoc/creating_plots/f1-32495.html
> 
> correctly is not the right thing to happen. The fltk backend seems to get 
> this right..
> 
> D.

I don't think the fltk backend bothers with the activepositionproperty at all. 
Meaning it assumes the position property is active and essentially ignores the 
outerposition property.

To match Matlab's behavior, work needs to be done in the font end to get the 
relationships between the position, outerposition, tightinset, and 
activepositionproperty working correctly.

One quick example that illustrates a gap between Octave and Matlab ...

>> clf
>> axes
>> set(gca,'outerPosition',[0.2 0.2 0.5 0.5])
>> get(gca, 'position')
ans =        0.265        0.255       0.3875       0.4075
>> xlabel ('my label')
>> get(gca, 'position')
ans =        0.265      0.29048       0.3875      0.37202

If I infer correctly this can be handled correctly based upon your recent work. 
If the position property for all axes were updated in the frontend then it 
would be best for the __go_draw_*.m files to ignore the outerposition ... 
Correct?

If my understanding is correct, then the recent changeset I made allowing the 
gnuplot backend to render differently depending upon the activepositionproperty 
will need to be reverted.

Ben





reply via email to

[Prev in Thread] Current Thread [Next in Thread]