[Users-fr] newaxes et subplot

Samuel Gougeon sgougeon at free.fr
Ven 9 Juil 08:23:55 CEST 2021


Bonjour,

Le 08/07/2021 à 19:28, Samuel Gougeon a écrit :
> Le 08/07/2021 à 17:06, CHEZE David 227480 a écrit :
>>
>> Bonjour Samuel,
>>
>> Merci de signaler cette évolution, cela simplifie effectivement les 
>> subplot en lien avec uicontrol frame.
>>
>> Dans mon cas, le besoin initial est de pouvoir faire (aussi 
>> simplement que possible dans l’idéal) des graphiques avec plusieurs 
>> axes (avec newaxes ) dans chaque vignette subplot sans avoir à passer 
>> explicitement par la création d’un quadrillage uicontrol. En gros il 
>> faudrait que newaxes() par défaut récupère un ‘handle’ h 
>> correspondant au dernier appel à h=subplot(mnp) et s’inscrive dans ce 
>> cadre (h=subplot(mnp) parent de newaxes que ce soit par défaut 
>> newaxes() ou en donnant la possiblité à newaxes(subplot(mnp)) de 
>> récupérer une indication sur  la parenté que l’on souhaite créer). Je 
>> ne m’étais jamais intéressé de près aux uicontrol, cela permet de 
>> faire ce que je veux mais cela reste lourd à écrire.
>>
>> David
>>
>
> Le "problème" est que lorsque subplot cible un carreau coïncidant avec 
> un repère déjà existant, il rend celui-ci actif au lieu d'en définir 
> un nouveau superposé. C'est évidemment délibéré. Mais ce comportement 
> pourrait être modifié par une option subplot(i,j,k, "new"). En cas de 
> superposition exacte détectée, le nouveau repère pourrait alors 
> d'emblée être créé avec
>
>   * .filled="off"
>   * des marges identiques à celles du repère sous-jacent
>   * des axes gradués positionnés de l'autre coté de ceux du repère
>     sous-jacent.
>

D'un point de vue ergonomie du langage, il serait encore plus 
intéressant d'implémenter une syntaxe
*newaxes(template_axes)*

qui ferait la même chose. template_axes ne serait pas utilisé comme 
parent mais comme template.
Contrairement à subplot(..,"new"), une telle syntaxe serait utilisable 
également pour les repères hors quadrillage, tels que les inserts 
xsetech() ou autre.
On aurait alors

ax  =  subplot(2,2,4);
plot2d()
newaxes(ax);
plot([0.1  0.9],[0.1  0.9],"r")

ax2  =  subplot(1,2,1)
plot2d()
newaxes(ax2);
plot([0.1  0.9],[0.1  0.9],"r")

Samuel

-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://lists.scilab.org/pipermail/users-fr/attachments/20210709/ba6ffcf6/attachment.htm>


Plus d'informations sur la liste de diffusion users-fr