[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