# Graphiques

> La barre d'outils que porte chaque graphique et ce que fait chaque bouton, les volets d'échelle, de statistiques et de lignes de référence, la fenêtre de graphique détachée, où les graphiques apparaissent dans l'application, et le moteur unique derrière tous.

Chaque graphique de l'application est dessiné par un seul moteur (ECharts) au travers d'une seule
vue de graphique, quoi qu'il l'ait mis à l'écran : les composants
[Graphique en courbes](component-line-chart), [Graphique en barres](component-bar-chart) et
[Graphique circulaire](component-pie-chart) d'un tableau de bord, la carte Voies d'un
[volet d'unité](view-unit-panels), le graphique en direct d'un essai sur la page Process, le
graphique du datalog d'un essai enregistré dans [Historiques](histories), l'aperçu du profil d'une
recette dans une [recette](process-recipes) ou une procédure, l'aperçu du critère d'une
[évaluation](process-evaluations), et les deux fenêtres détachées ci-dessous. Ce qui diffère entre
eux, c'est d'où vient la configuration, jamais le tracé : une lacune dans les données est toujours
un trou dans la courbe, jamais un pont, et chaque nombre et chaque instant que le graphique écrit
suivent la [localisation](settings-localization) propre à la station. Le rapport PDF rend le même
tracé sans aucun des outils de cette page.

## La barre d'outils {#the-toolbar}

Un graphique porte une rangée de boutons au-dessus de son sous-graphique : la même barre partout, à qui l'on
dit par graphique quels boutons dessiner. Sur un composant de tableau de bord, cette liste est la
section **Boîte à outils** de ses propriétés
([L'éditeur de tableau de bord](view-editor#toolbox)) ; une surface qui n'a personne à qui demander
(un essai enregistré, l'aperçu d'une recette) offre tous les outils qu'un graphique temporel peut
honorer. Sans aucun outil, aucune barre d'outils n'est tracée.

| Bouton (son infobulle) | Ce qu'il fait | Proposé sur | Actif par défaut sur une vue |
|---|---|---|---|
| Ouvrir dans une autre fenêtre | Ouvre le même graphique dans une fenêtre à lui (voir plus bas). Seulement là où le graphique a une adresse propre : un essai enregistré dans Historiques, un profil de recette. Jamais sur un graphique posé sur une vue. | Essais enregistrés, profils de recette | non proposé |
| Sélectionner une zone à agrandir | Arme le zoom par rectangle : le glissement suivant sur le sous-graphique encadre le rectangle qu'il dessine au lieu de déplacer la vue. Le bouton reste allumé tant qu'il est armé. | Graphiques temporels | oui |
| Réinitialiser le zoom | Ramène le cadre à tout ce qui est tracé. | Graphiques temporels | oui |
| Régler l'échelle à la main | Ouvre le volet d'échelle ci-dessous. Allumé tant que quelque chose est figé, de sorte qu'une échelle qui a cessé de suivre les données le dise sans qu'on l'ouvre. | Graphiques temporels | non |
| Minimum, moyenne et maximum de la fenêtre affichée | Ouvre le volet de statistiques ci-dessous. Mesuré seulement tant que le volet est ouvert. | Graphiques temporels | non |
| Tracer une ligne de référence | Ouvre le volet des lignes de référence ci-dessous. Allumé tant qu'une ligne est tracée. | Graphiques temporels | non |
| Enregistrer le PNG | Télécharge le tracé en PNG à deux fois la résolution de l'écran, sur le fond du thème, nommé d'après le titre du graphique (« chart » quand il n'en a pas). | Tous les graphiques | oui |
| Copier le PNG | Met le même PNG dans le presse-papiers. Le journal des actions répond « Le graphique a été copié comme image. » ; quand le navigateur refuse l'écriture, il indique « Le navigateur a refusé le presse-papiers, donc le graphique n'a pas été copié. », et quand il n'a aucun presse-papiers « Ce navigateur n'offre pas de presse-papiers, donc le graphique n'a pas été copié. » | Tous les graphiques | oui |
| Afficher ou masquer des séries | Ouvre une liste des séries tracées avec une case à cocher chacune, lue directement sur le graphique ; décocher masque une série tant que la vue reste ouverte. « Aucune série » quand rien n'est tracé. | Graphiques temporels | oui |
| L'infobulle est désactivée / L'infobulle est activée | Active ou désactive la lecture au survol. Elle s'ouvre désactivée, de sorte qu'une main qui traverse le sous-graphique ne le couvre jamais d'une boîte que personne n'a demandée ; le choix dure la session. | Graphiques temporels | oui |
| Plein écran | Remplit la fenêtre avec ce seul graphique, par le plein écran d'élément du navigateur ; l'appuyer de nouveau, ou Échap, rend la fenêtre. Sur un tableau de bord déjà en plein écran, il agrandit le graphique, et Échap quitte le graphique avant de quitter le tableau de bord. | Tous les graphiques | oui |

Un Graphique en barres ou un Graphique circulaire ne peut honorer que la paire PNG et le Plein
écran : une comparaison lue à cet instant n'a pas d'axe à parcourir, pas de fenêtre à mesurer et
rien sur quoi poser une ligne. Un Graphique en courbes dont le **Déplacement** est sur « fenêtre
fixe » ne reçoit ni « Sélectionner une zone à agrandir » ni « Réinitialiser le zoom », cochés ou
non : une fenêtre que rien ne déplace n'a aucun zoom auquel ils répondraient, et les deux reviennent
quand la fenêtre se déplace de nouveau. Un seul volet est ouvert à la fois, et un appui n'importe
où ailleurs le ferme. Sur un graphique trop bas pour un volet, le volet s'arrête à l'intérieur du
graphique et fait défiler ce qu'il ne peut contenir, et sur un graphique étroit les boutons qui
occupent toute la largeur du formulaire d'un volet
(**Charger la fenêtre affichée**, **Tracer la ligne**) passent à la ligne au lieu de déborder.

Le zoom et le déplacement eux-mêmes sont le réglage **Déplacement** du graphique (une fenêtre fixe,
molette et glissement, ou molette et glissement plus une barre de navigation en dessous du sous-graphique qui
montre où le cadre se situe dans tout l'enregistrement) ; un graphique à sous-graphiques empilés les
déplace tous ensemble, parce qu'ils partagent un seul axe du temps. Un geste ne touche jamais à ce
qui est enregistré : le graphique dessine ce qui atteint le plan de travail depuis la plage visible,
donc un zoom avant révèle toujours les données réelles, et une marque dans le coin peut dire si
l'image est la mesure ou une réduction de celle-ci
([Graphique en courbes](component-line-chart#fidelity-and-performance)).

## Régler l'échelle à la main {#set-the-scale-by-hand}

Le volet fige une période de l'axe du temps et une plage de l'axe des valeurs, chaque côté
indépendamment. Chaque champ valide quand vous le quittez ; un champ vide est un côté laissé libre,
qui continue de s'ajuster tout seul.

| Champ | Ce qu'il prend |
|---|---|
| Période / Période (s à partir de maintenant) / Échantillons | Les deux bouts de l'axe du temps, demandés dans les mots dans lesquels l'axe est tracé : deux sélecteurs de date et heure sur un axe d'horloge, deux nombres de secondes sur un axe relatif, deux nombres d'échantillons sur un axe d'échantillons. |
| Axe des valeurs, minimum et maximum | Les bouts de l'axe des valeurs propre au graphique. Sur un graphique à sous-graphiques empilés, c'est la règle du sous-graphique du haut seule ; la période de temps déplace tous les sous-graphiques ensemble. |
| Automatique (un par axe) | Rend cet axe au cadre que le graphique avait construit : une fenêtre glissante glisse de nouveau, un axe écrit avec des bouts tenus y retourne, un axe écrit sans aucun retourne à son ajustement libre. Grisé tant que rien n'est figé sur cet axe. |
| Charger la fenêtre affichée | Remplit les quatre champs à partir du cadre réellement à l'écran, après chaque zoom et chaque déplacement que vous avez faits, de sorte que figer ce que vous regardez coûte un appui. |

Le figeage appartient à ce graphique sur cette connexion : il n'est jamais enregistré avec la vue,
un autre navigateur qui regarde le même graphique a le sien, et fermer la vue le libère. Un cadre
figé qui ne contient aucun des échantillons se dessine tout de même, et le dit en dessous du sous-graphique :
« Rien n'a été mesuré dans l'échelle que vous avez figée. »

## Minimum, moyenne et maximum {#minimum-average-and-maximum}

Le volet est un tableau d'une ligne par série tracée (une série que l'auteur de la vue a coupée
n'est pas sur la vue et n'est pas dans le tableau ; une série masquée avec la légende y est encore),
coloriée de son encre, avec **Valeur minimale**, **Moyenne** et **Valeur maximale** sur les échantillons contenus dans la
fenêtre affichée, écrits comme la station écrit les nombres. La ligne au-dessus du tableau dit de
quelle fenêtre il s'agit : « La fenêtre affichée, jusqu'à l'échantillon le plus récent. » ou « La
fenêtre affichée. L'échantillon le plus récent est au-delà de son bord droit. » quand vous êtes
remonté dans l'historique. L'infobulle d'une ligne dit combien des échantillons de la fenêtre
étaient des lectures ; une lacune compte comme un échantillon que la fenêtre contenait et comme rien
dans les trois nombres, donc aucune moyenne n'est prise par-dessus un trou. Une ligne qui n'a rien à
lire écrit des lacunes et dit de quel silence il s'agit : « Rien de cette série n'a été échantillonné
dans la fenêtre affichée. » ou « Chaque échantillon de cette série dans la fenêtre affichée est une
lacune. » Les nombres suivent les données en direct tant que le volet est ouvert et sont mesurés
sur les échantillons eux-mêmes, jamais sur le tracé réduit.

## Lignes de référence {#reference-lines}

Une ligne de référence est une ligne à une valeur en travers du sous-graphique, ou à un instant du haut en
bas, avec des mots pour dire pourquoi elle est là et une couleur pour la distinguer de la suivante.
Le volet liste ce qui est tracé, chaque ligne avec sa ✕, et **Tout retirer** ; sous la liste, un
petit formulaire trace la suivante :

| Champ | Ce qu'il prend |
|---|---|
| Quel axe | **À une valeur**, ou l'axe du temps dans ses propres mots : **À un instant** (un sélecteur de date et heure), **À une seconde (à partir de maintenant)** ou **À un échantillon**. Changer l'axe vide la position, puisqu'une valeur et un instant ne sont pas le même nombre. |
| Où va la ligne | La position sur cet axe. **Tracer la ligne** est grisé tant qu'elle n'en contient pas. |
| Ce que dit la ligne | Texte facultatif tracé sur la ligne. |
| La couleur de la ligne | Un sélecteur de couleur ; une ligne démarre en orangé. |
| Tracer la ligne | La trace. La position et le texte se vident pour la ligne suivante ; l'axe et la couleur restent. |

Les lignes appartiennent au graphique devant vous et à rien d'autre : elles ne sont pas
enregistrées, l'auteur de la vue n'en est jamais informé, une autre connexion ne les voit pas, et
fermer la vue y met fin. Une annotation qui doit survivre au regard appartient à un essai, où le
fichier propre à l'essai l'enregistre ([Essais et commentaires](process-runs)).

## La fenêtre de graphique détachée {#the-detached-chart-window}

**Ouvrir dans une autre fenêtre** ouvre la route propre au graphique dans une nouvelle fenêtre : une
vraie fenêtre de l'application sur la station, un nouvel onglet dans un navigateur distant.
L'appuyer de nouveau ramène la fenêtre existante au premier plan au lieu d'en ouvrir une deuxième.
Deux routes existent :

| Route | Ce qu'elle montre | Ouverte depuis |
|---|---|---|
| `/chart/run/{id}` | Le graphique du datalog d'un essai enregistré, rechargé depuis le fichier d'essai : ses séries, ses annotations, ses commentaires et les plages approuvées de sa procédure telle qu'elle est configurée aujourd'hui. « Essai introuvable » quand l'identifiant ne résout rien. | Le graphique d'un essai dans [Historiques](histories) |
| `/chart/recipe/{id}` | Le profil Échelon, Rampe et Palier d'une recette, reconstruit depuis les modèles enregistrés. « Recette introuvable » quand l'identifiant ne résout rien. | L'éditeur de recette et l'aperçu de recette d'une procédure |

La fenêtre s'affiche sans le shell : pas de barre de navigation, pas de barre de titre, pas de barre
d'état, juste une barre en haut avec le titre du graphique et **Synchroniser X avec le graphique
principal** (« Refléter le zoom et le déplacement de l'axe X sur le graphique principal »), activée
par défaut, au-dessus du graphique avec sa barre d'outils complète. Tant que la synchronisation est
active, la fenêtre rejoint un canal désigné par sa route et suit le zoom et le déplacement du
graphique principal sur l'axe du temps ; désactivée, elle navigue toute seule. Chaque route exige
ce qui admet une identité à ce qu'elle dessine : la fenêtre d'un essai demande Voir les historiques,
la permission même qui admet le navigateur des essais enregistrés d'où elle est ouverte, et la
fenêtre d'une recette demande la politique propre à la page Process, qu'ouvre n'importe lequel des
quatre interrupteurs de Process ou Voir les historiques. Un rôle qui n'a pas ce que sa propre route
demande, ou qui le perd pendant que la fenêtre est ouverte, ne peut pas lire ce graphique par son
adresse. La
fenêtre est en lecture seule : les commentaires et les annotations se modifient dans Historiques,
pas ici.

## Ce que les outils ne font pas {#what-the-tools-do-not-do}

Rien dans la barre d'outils ne change la vue : une série masquée, un figeage, une ligne et l'état de
l'infobulle sont tous l'état de ce graphique sur cette connexion, et une vue rouverte demain s'ouvre
nette. Rien dans la barre n'atteint un rapport : le PDF rend le tracé que son propre producteur
construit, sans figeages, sans lignes et sans outils. La barre n'exporte aucune donnée, seulement
des images : les nombres d'un essai sortent par les exports d'[Historiques](histories). Et la barre
n'offre aucun outil que le tracé ne peut pas honorer : une comparaison de catégories ne reçoit
jamais de zoom, d'échelle, de statistiques ni de lignes, un graphique en courbes tenu dans une
fenêtre fixe ne reçoit jamais les deux boutons de zoom, et un graphique posé sur une vue ne reçoit
jamais de fenêtre à lui.
