replot recadre la zone affichée d'un ou plusieurs repères graphiques

## Syntaxe

              replot()
              replot(area)
              replot(idAxes)
              replot(area, idAxes)
              replot(.., tight_limits)

## Paramètres

area

  matrice `[xmin xmax ; ymin ymax]` ou `[xmin xmax ; ymin ymax ; zmin zmax]`, ou vecteur `[xmin ymin xmax ymax]` ou `[xmin ymin zmin xmax ymax zmax]`: nouvelles bornes de la zone à réafficher.

  - La valeur `%nan` peut être utilisée pour conserver une borne telle quelle.
  - La valeur `%inf` peut être utilisée pour établir une borne à la position de l'objet graphique le plus marginal présent dans le repère, dans la direction considérée.

  La zone `area` par défaut est [%inf %inf %inf %inf] pour un repère 2D, ou [%inf %inf %inf %inf %inf %inf] en 3D.

  Si N repères graphiques sont identifiés dans `idAxes`, `area` peut être une matrice de N lignes et 4 ou 6 colonnes. Chaque ligne correspond alors à un repère graphique respectif de `idAxes`. Si `area` est seulement un vecteur de 4 ou 6 bornes, celles-ci sont utilisées pour tous les repères à recadrer.

idAxes

  Vecteur d'identifiants graphiques soit de type Axes, soit ayant des descendants directs de type Axes, tels que les Figures ou certains composants uicontrol de style `frame`. `idAxes` spécifie les repères graphiques à recadrer, directement ou via leur parents directs. Si aucun repère n'est identifié, l'instruction `replot` est simplement ignorée.

  Par défaut, le repère graphique actif est considéré.

tight_limits

  Mot simple `"tight"` ou `"on"` ou `"off"`, ou vecteur de 2 (en 2D) ou 3 (en 3D) mots `"tight"`, `"on"` ou `"off"`. Si un seul mot est fourni, il est utilisé pour les 2 ou 3 axes de chaque repère.

  Cette option force la valeur de l'attribut `.tight_limits` des repères aux valeurs `"on"` ou `"off"` données.

  Par défaut, les attributs tight_limits en cours sont inchangés.

## Description

`replot` recadre les repères graphiques spécifiés par `idAxes` (ou par défaut le repère graphique actif) en changeant leurs bornes spécifiées en 2D sous la forme `[xmin xmax ; ymin ymax]` ou `[xmin ymin xmax ymax]`, ou en 3D avec `[xmin xmax ; ymin ymax ; zmin zmax]` ou `[xmin ymin zmin xmax ymax zmax]`.

`replot` modifie l'attribut `data_bounds` des repères.

Lorsque la valeur spécifiée pour une borne est infinie (%inf et -%inf sont équivalentes), `replot` recherche dans le repère l'objet graphique le plus marginal du coté de la borne considérée, et assigne la position de l'objet comme borne effective. Les dimensions des objets sont prises en compte, de sorte à assurer qu'aucun objet ne soit partiellement ou totalement caché hors du repère dans la direction choisie.

Lorsque l'option `tight_limits` est fournie, sa valeur est affectée à l'attribut `.tight_limits` de chaque repère graphique considéré, axe par axe.

## Exemples

          // Premier exemple
          x=[0:0.1:2*%pi]';
          plot2d(x,sin(x))
          replot([-1,-1,10,2])

x=[0:0.1:2*%pi]'; plot2d(x,sin(x)) replot([-1,-1,10,2])

    // second exemple
    xdel(winsid());
    plot() // plot demo
    f=gcf();
    replot([-1,-1,10,2],f.children(1)) // specify axes handle's value
    replot([-3,-2,8,4],f.children(2))

xdel(winsid()); plot() f2=gcf(); replot([-1,-1,10,2],f2.children(1)) replot([-3,-2,8,4],f2.children(2))

    // Les bornes signalées par la valeur %nan ne sont pas modifiées :
    x = linspace(0,360,200).';
    clf
    plot2d(x,[sind(x) tand(x)])
    ax = gca();
    ax.data_bounds              // bornes initiales
    replot([%nan,-10,%nan,10])  // Seules Ymin and Ymax sont modifiées
    ax.data_bounds              // nouvelles bornes

    // En 3D, les bornes en Z peuvent également être modifiées :
    clf
    x = linspace(-4,4,100);
    X = meshgrid(x);
    R = (X-0.5).^2 + (X.'+0.7).^2;
    Z = sinc(R);
    surf(x-0.5,x+0.7,Z)
    f = gcf();
    f.color_map = autumncolormap(100);
    ax = gca();
    ax.data_bounds
    sleep(3000)
    replot([-5 0 -0.4 0 5 0.5])
    ax.data_bounds

    // Plusieurs repères graphiques peuvent être simultanément recadrés :
    clf
    x = linspace(-%pi,%pi,400);
    subplot(2,2,1)
    plot2d(x,sin(1 ./sqrt(abs(x))))
    ax1 = gca();
    subplot(2,2,2)
    plot2d(x,sinh(sqrt(abs(x))))
    subplot(2,1,2)
    plot2d(x,cos(1 ./sqrt(abs(x))))
    ax2 = gca();
    sleep(4000)
    f = gcf();
    replot([-1 %nan 1.5 %nan], [ax1 ax2])

## Voir aussi

- zoom_rect
- rubberbox
- axes_properties

## Historique

5.5.0

- Extension en 3D

- Plusieurs repères graphiques peuvent être désormais redimensionnés simultanément

- `%nan` peut être utilisé pour spécifier une borne inchangée.

6.0

- Les identifiants de composants uicontrol de style frame ayant des children de type Axes à traiter sont désormais acceptés.
- %inf peut être utilisée pour fixer une borne à la position du contenu le plus marginal.
- Ajout de la syntaxe replot() abrégeant replot([%inf %inf %inf %inf]).
- Option tight_limits ajoutée.