octave-maintainers
[Top][All Lists]
Advanced

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

Re: bounds on position for text()


From: Konstantinos Poulios
Subject: Re: bounds on position for text()
Date: Wed, 9 Feb 2011 19:14:23 +0100

On Mon, Feb 7, 2011 at 12:37 AM, Ben Abbott <address@hidden> wrote:
> On Feb 6, 2011, at 6:35 PM, Michael D Godfrey wrote:
>
>> On 02/06/2011 03:21 PM, Konstantinos Poulios wrote:
>>> On Mon, Feb 7, 2011 at 12:16 AM, Michael D Godfrey
>>>
>>> <address@hidden>
>>>  wrote:
>>>
>>>> >
>>>> On 02/06/2011 02:49 PM, logari81 wrote:
>>>>
>>>> >
>>>> >
>>>> On Sun, 2011-02-06 at 17:21 -0500, Ben Abbott wrote:
>>>>
>>>> >
>>>>> >>
>>>>> On Feb 6, 2011, at 4:02 PM, Michael D Godfrey wrote:
>>>>>
>>>>> >>
>>>> >
>>>>>> >> >
>>>>>> A short while ago I created a bug report
>>>>>>
>>>>>> >> >
>>>>>> (32311) which pointed out the fact that
>>>>>>
>>>>>> >> >
>>>>>> text(x,y,"xxx') only works for x,y within the
>>>>>>
>>>>>> >> >
>>>>>> axes. Matlab and legend allow writing the
>>>>>>
>>>>>> >> >
>>>>>> string anywhere in the window.
>>>>>>
>>>>>> >> >
>>>>>> >> >
>>>>>> Since you just fixed legend, any chance
>>>>>>
>>>>>> >> >
>>>>>> you could look at this?  Quite a lot of Matlab
>>>>>>
>>>>>> >> >
>>>>>> code write annotations on plots using text
>>>>>>
>>>>>> >> >
>>>>>> and positions this outside the axes.
>>>>>>
>>>>>> >> >
>>>>>> >> >
>>>>>> Michael
>>>>>>
>>>> >
>>>>> >>
>>>>> >>
>>>>> I notice this work for the gnuplot backend, but not for the FLTK backend.
>>>>>
>>>>> >>
>>>>> >>
>>>>> It looks to me like something is checking the x/ydata values and not
>>>>>
>>>>> >>
>>>>> rendering the result if it is outsize the axis limits.
>>>>>
>>>>> >>
>>>>> >>
>>>>> I'd expect this to be done in gl_render.cc, but don't see where it is.
>>>>>
>>>>> >>
>>>>> I've cc'd Kostas, in case he knows where this is done.
>>>>>
>>>>> >>
>>>>> >>
>>>>> Ben
>>>>>
>>>>> >>
>>>> >
>>>> >
>>>> printing of text objects is done in draw_axes_children in gl-render.cc
>>>>
>>>> >
>>>> after the clipping property is checked.
>>>>
>>>> >
>>>> >
>>>> So it works if you just set clipping off, like:
>>>>
>>>> >
>>>> >
>>>> set(ht,'clipping','off')
>>>>
>>>> >
>>>> >
>>>> If it would make sense we could change the default clipping to on.
>>>>
>>>> >
>>>> >
>>>> Kostas
>>>>
>>>> >
>>>> >
>>>> I just tried this.  It does not work.
>>>>
>>>> >
>>>> octave:1> ht=plot(1:200)
>>>>
>>>> >
>>>> ht = -19.142
>>>>
>>>> >
>>>> octave:2> set(ht,'clipping','off');
>>>>
>>>> >
>>>> octave:3> text(200,-2,'this is it')
>>>>
>>>> >
>>>> octave:4> set(ht,'clipping','on');
>>>>
>>>> >
>>>> octave:5> text(200,-2,'this is it')
>>>>
>>>> >
>>>> octave:6> text(200,2,'this is it')
>>>>
>>>> >
>>>> octave:7> text(200,20,'this is it')
>>>>
>>>> >
>>>> octave:8> text(201,20,'this is it')
>>>>
>>>> >
>>>> octave:9>
>>>>
>>>> >
>>>> =========================
>>>>
>>>> >
>>>> None of the text commands with x,y outside axes prints.
>>>>
>>>> >
>>>> >
>>> the clipping property refers to the text object, so just try:
>>>
>>> ht=text(200,-2,'this is it');
>>> set(ht,'clipping','on');
>>>
>>> Kostas
>>>
>>>
>> Right. Now it "works."  Except, where you say above 'on'
>> you really need 'off'.   But, it is not like Matlab and it is a bit of
>> work to obtain the text handle and set 'off' for each text use.
>> So, how about default  'off.'?    Someday it might be useful
>> to have a global on/off, but maybe after the release?
>>
>> Michael
>
> Matlab R2010b has the default set to "off".
>
> I recommend we do the same.
>
> Ben
>
>

I have taken a look at this, but I couldn't find a very easy way to
change the default clipping value in the backend. This is because the
clipping property is shared among many different classes and the text
class doesn't have an init function which would let us override any
default values of the base class.

Here we have to take a decision, should we add a init function for the
text class or should we set the default value for clipping to "off" in
the frontend (e.g. text.m)? Maybe John could give us some advice on
that.

Kostas


reply via email to

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