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