[Scilab-users] question on graphic children order
Stéphane Mottelet
stephane.mottelet at utc.fr
Wed Apr 10 10:25:24 CEST 2019
It works (after the modification in GraphicObject.java)
t=linspace(0,2*%pi,4);
plot(t,sin(t))
plot(t,cos(t),'r')
legend('sin','cos')
--> gca().children(1).children.data
ans =
0. 0.
2.0943951 0.8660254
4.1887902 -0.8660254
6.2831853 -2.449D-16
--> gca().children(2).children.data
ans =
0. 1.
2.0943951 -0.5
4.1887902 -0.5
6.2831853 1.
i.e. the first compound is the sine. But it breaks legend() (see
attached screenshot).
S.
Le 10/04/2019 à 08:47, Stéphane Mottelet a écrit :
>
> Le 10/04/2019 à 01:24, Federico Miyara a écrit :
>
>>
>> Antoine,
>>
>> Thank you for your suggestion. It's a good one, but I still don't
>> know the reason why the index of the current entity is 1 (my question
>> was not really about workarounds but reasons). Stéphane said it was a
>> stack, but as far as I could find, there is no stack structure in
>> Scilab 6.
>
> It was an image. The graphics objects tree is not built at the
> interpreter level but internally with, at the end, Java objects. In
>
> modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObject.java
>
> you can see that the set of children of a graphic object is a (Java) list
>
> /** Child objects list. Known by their UID */
> private List <Integer> children;
>
> When a children is added to a graphic object, the the method
> "addChild" is invoked. In the source you can see
>
> public void addChild(Integer child) {
> children.add(0, child);
> }
>
> Which is coherent with the actual behavior i.e. news children are
> pushed on the top.
>
> What you would like is simply (without the 0)
>
> public void addChild(Integer child) {
> children.add(child);
> }
>
> If I have time I can see if it breaks other things, but I am almost
> sure that it will...
>
> S.
>
>
>>
>>
>> On 09/04/2019 04:22, Antoine Monmayrant wrote:
>>> Hello,
>>>
>>> As Stéphane said, using a tag and findobj is a possibility that I
>>> use for complex layouts.
>>> Here is another one: build your own vector of handles that you order
>>> the way you want:
>>>
>>> as=[];
>>> subplot(221)
>>> plot(1,2)
>>> as=[as,gca()]
>>> subplot(222)
>>> plot(1:2,2:3)
>>> as=[as,gca()]
>>> subplot(223)
>>> plot(2*[1:2],2:3)
>>> as=[as,gca()]
>>> subplot(224)
>>> plot(2*[1:2],-[2:3])
>>> as=[as,gca()]
>>> as.foreground=color('gray');
>>> as.background=color('lightgray');
>>> as.thickness=2;
>>> as.font_size=4;
>>>
>>> Cheers,
>>>
>>> Antoine
>>>
>>> Le 09/04/2019 à 08:30, P M a écrit :
>>>> Federico...thanks for asking the question.
>>>> I was wondering about it myself for quite some time.
>>>> Once recognizing the fact, I just accepted that new entities are
>>>> placed at the first position.
>>>> However, it might be interesting to get some insight of why it is
>>>> like this....for now I guessed it has to do with how to handle memory.
>>>>
>>>> Philipp
>>>>
>>>>
>>>> Am Mo., 8. Apr. 2019 um 23:01 Uhr schrieb Stéphane Mottelet
>>>> <stephane.mottelet at utc.fr <mailto:stephane.mottelet at utc.fr>>:
>>>>
>>>> Le 08/04/2019 à 22:56, Federico Miyara a écrit :
>>>>
>>>>>
>>>>> Stéphane,
>>>>>
>>>>> Sometimes one just needs to extract some parameter from an
>>>>> entity and indexing is a valid way to access it.
>>>>
>>>> So what is your problem since you know that the order of
>>>> entities is, though not natural, reproductible ? If you really
>>>> need to recover a deeply hidden entity, use tags and the
>>>> findobj() function.
>>>>
>>>> S.
>>>>
>>>>>
>>>>> Federico
>>>>>
>>>>>
>>>>> On 08/04/2019 12:18, Stéphane Mottelet wrote:
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> Le 07/04/2019 à 10:13, Federico Miyara a écrit :
>>>>>>>
>>>>>>> Dear all,
>>>>>>>
>>>>>>> I would like to know if there is a reason for the fact that
>>>>>>> whenever new graphic objects are added to an axes, the last
>>>>>>> one that has been created is always the one with index 1
>>>>>>> instead of n+1 (where n is the number of objects prior to
>>>>>>> new one).
>>>>>>>
>>>>>>> Example:
>>>>>>>
>>>>>>> scf(1)
>>>>>>> clf(1)
>>>>>>>
>>>>>>> // Plot a simple two-point graph
>>>>>>> plot2d([0,1],[0,1])
>>>>>>> ax=gca()
>>>>>>>
>>>>>>> // Colect plotted data
>>>>>>> a=ax.children(1).children.data
>>>>>>>
>>>>>>> // Plot a simple two-point graph
>>>>>>> plot2d([0,1],[0.5,1.5])
>>>>>>>
>>>>>>> // Colect plotted data corresponding to index 1
>>>>>>> b=ax.children(1).children.data
>>>>>>>
>>>>>>> // Colect plotted data corresponding to index 2
>>>>>>> c=ax.children(2).children.data
>>>>>>>
>>>>>>> After the first plot we get
>>>>>>>
>>>>>>> a =
>>>>>>> 0. 0.
>>>>>>> 1. 1.
>>>>>>>
>>>>>>> After the second plot we get
>>>>>>>
>>>>>>> b =
>>>>>>> 0. 0.5
>>>>>>> 1. 1.5
>>>>>>>
>>>>>>> c =
>>>>>>>
>>>>>>> 0. 0.
>>>>>>> 1. 1.
>>>>>>>
>>>>>>> I would expect that b = a, i.e, once a children object has
>>>>>>> been created on the axes, it would be reasonable that its
>>>>>>> index were kept constant. The current behavior is as if each
>>>>>>> new object were inserted in the structure before the
>>>>>>> previous one instead of after it.
>>>>>>
>>>>>> I would say that the set of children is a stack, i.e. each
>>>>>> new child is "pushed" on top. Anyway, relying on child order
>>>>>> seems, to me, a bad idea. For example, legend takes as
>>>>>> (optional) first argument an array of handles, and not an
>>>>>> array of child numbers.
>>>>>>
>>>>>> S.
>>>>>>
>>>>>>>
>>>>>>> Regards,
>>>>>>>
>>>>>>> Federico Miyara
>>>>>>>
>>>>>>>
>>>>>>> <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>>>>>>> Libre de virus. www.avast.com
>>>>>>> <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>>>>>>>
>>>>>>>
>>>>>>> <#m_-570024488477070350_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> users mailing list
>>>>>>> users at lists.scilab.org <mailto:users at lists.scilab.org>
>>>>>>> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> users mailing list
>>>>>> users at lists.scilab.org <mailto:users at lists.scilab.org>
>>>>>> http://lists.scilab.org/mailman/listinfo/users <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> users mailing list
>>>>> users at lists.scilab.org <mailto:users at lists.scilab.org>
>>>>> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users>
>>>> _______________________________________________
>>>> users mailing list
>>>> users at lists.scilab.org <mailto:users at lists.scilab.org>
>>>> http://lists.scilab.org/mailman/listinfo/users
>>>> <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users>
>>>>
>>>>
>>>> _______________________________________________
>>>> users mailing list
>>>> users at lists.scilab.org
>>>> http://lists.scilab.org/mailman/listinfo/users
>>>
>>>
>>> --
>>> +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>
>>> Antoine Monmayrant LAAS - CNRS
>>> 7 avenue du Colonel Roche
>>> BP 54200
>>> 31031 TOULOUSE Cedex 4
>>> FRANCE
>>>
>>> Tel:+33 5 61 33 64 59
>>>
>>> email :antoine.monmayrant at laas.fr
>>> permanent email :antoine.monmayrant at polytechnique.org
>>>
>>> +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>
>>>
>>>
>>> _______________________________________________
>>> users mailing list
>>> users at lists.scilab.org
>>> http://lists.scilab.org/mailman/listinfo/users
>>
>>
>> _______________________________________________
>> users mailing list
>> users at lists.scilab.org
>> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20190410/fe1fd71a/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Figure0.png
Type: image/png
Size: 7739 bytes
Desc: not available
URL: <https://lists.scilab.org/pipermail/users/attachments/20190410/fe1fd71a/attachment.png>
More information about the users
mailing list