# Gráficos

> A barra de ferramentas que todo gráfico carrega e o que cada botão faz, os painéis de escala, de estatísticas e de linhas de referência, a janela de gráfico destacada, onde os gráficos aparecem no aplicativo, e o motor único por trás de todos eles.

Todo gráfico do aplicativo é desenhado por um motor só (ECharts) através de uma vista de
gráfico só, seja qual for o que o colocou na tela: os componentes
[Gráfico de linhas](component-line-chart), [Gráfico de barras](component-bar-chart) e
[Gráfico de pizza](component-pie-chart) num dashboard, o cartão de canais de um
[painel de unidade](view-unit-panels), o gráfico ao vivo de uma execução na página do
Process, o gráfico de datalog de uma execução gravada nos [Históricos](histories), a prévia
do perfil de uma [receita](process-recipes) ou de um procedimento, a prévia do critério de
uma [avaliação](process-evaluations), e as duas janelas destacadas abaixo. O que muda entre
eles é de onde vem a configuração, nunca o desenho: uma lacuna nos dados é sempre um buraco
na linha, nunca uma ponte, e todo número e todo instante que o gráfico escreve segue o
[idioma e os formatos](settings-localization) da própria estação. O relatório em PDF desenha
a mesma coisa sem nenhuma das ferramentas desta página.

## A barra de ferramentas {#the-toolbar}

Um gráfico carrega uma fileira de botões sobre o subgráfico: a mesma barra em todo
lugar, avisada por gráfico de quais botões desenhar. Num componente de dashboard essa lista
é a seção **Caixa de ferramentas** das propriedades dele
([O editor de dashboard](view-editor#toolbox)); uma superfície sem ninguém a quem perguntar
(uma execução gravada, a prévia de uma receita) oferece toda ferramenta que um gráfico de
tempo consegue honrar. Sem ferramenta nenhuma, nenhuma barra de ferramentas é desenhada.

| Botão (a dica dele) | O que ele faz | Oferecido em | Ligado por padrão numa tela |
|---|---|---|---|
| Abrir em outra janela | Abre o mesmo gráfico numa janela própria (veja abaixo). Só onde o gráfico tem um endereço próprio: uma execução gravada nos Históricos, o perfil de uma receita. Nunca num gráfico colocado numa tela. | Execuções gravadas, perfis de receita | não é oferecido |
| Selecionar uma área para ampliar | Arma a ampliação por caixa: o arrasto seguinte sobre o subgráfico enquadra a caixa que ele desenha, em vez de deslocar. O botão fica aceso enquanto está armado. | Gráficos de tempo | sim |
| Restaurar a ampliação | Devolve a janela a tudo o que está desenhado. | Gráficos de tempo | sim |
| Ajustar a escala à mão | Abre o painel de escala, abaixo. Fica aceso enquanto algo está fixado, então uma escala que deixou de acompanhar os dados diz isso sem precisar ser aberta. | Gráficos de tempo | não |
| Mínimo, média e máximo da janela mostrada | Abre o painel de estatísticas, abaixo. Medido só enquanto o painel está aberto. | Gráficos de tempo | não |
| Desenhar uma linha de referência | Abre o painel de linhas de referência, abaixo. Fica aceso enquanto alguma linha está desenhada. | Gráficos de tempo | não |
| Salvar PNG | Baixa o desenho como PNG no dobro da resolução da tela, sobre o fundo do tema, com o nome do título do gráfico ("chart" quando ele não tem título). | Todos os gráficos | sim |
| Copiar PNG | Põe o mesmo PNG na área de transferência. O feed de ações responde "O gráfico foi copiado como imagem."; quando o navegador recusa a escrita ele diz "O navegador recusou a área de transferência, então o gráfico não foi copiado.", e quando ele não tem área de transferência nenhuma "Este navegador não oferece área de transferência, então o gráfico não foi copiado." | Todos os gráficos | sim |
| Mostrar ou esconder séries | Abre uma lista das séries desenhadas com uma caixa de seleção cada, lida direto do gráfico; desmarcar esconde uma série enquanto a tela ficar aberta. "Nenhuma série" quando nada está desenhado. | Gráficos de tempo | sim |
| A dica de valor está desligada / A dica de valor está ligada | Liga ou desliga a leitura ao passar o cursor. Ela abre desligada, para que uma mão cruzando o subgráfico nunca o cubra com uma caixa que ninguém pediu; a escolha dura a sessão. | Gráficos de tempo | sim |
| Tela cheia | Preenche a janela com este gráfico só, pela tela cheia de elemento do navegador; pressionar de novo, ou o Esc, devolve a janela. Num dashboard já em tela cheia ele expande o gráfico, e o Esc sai do gráfico antes de sair do dashboard. | Todos os gráficos | sim |

Um gráfico de barras ou de pizza consegue honrar só o par de PNG e a tela cheia: uma
comparação lida neste instante não tem eixo a percorrer, não tem janela a medir e não tem
onde assentar uma linha. Um gráfico de linhas cuja Navegação está em janela fixa não recebe
nem Selecionar uma área para ampliar nem Restaurar a ampliação, marcados ou não: uma janela
que nada move não tem ampliação a que eles respondam, e os dois voltam quando a janela volta
a se mover. Só um painel fica aberto de cada vez, e um toque em qualquer outro lugar o
fecha. Num gráfico baixo demais para um painel, o painel termina dentro do gráfico e rola o que
não cabe nele, e num gráfico estreito os botões que atravessam o formulário de um painel
(**Carregar a janela mostrada**, **Desenhar a linha**) quebram a linha em vez de passar da borda.

Ampliar e deslocar são a configuração de **Navegação** do gráfico (uma janela fixa, roda e
arrasto, ou roda e arrasto mais uma barra de navegação sob o subgráfico mostrando onde a
janela fica dentro da gravação inteira); um gráfico com subgráficos
empilhados move todos juntos, porque eles dividem um eixo de tempo só. Um gesto
nunca toca no que está guardado: o gráfico desenha o que chega ao canvas vindo da faixa
visível, então ampliar sempre revela os dados de verdade, e uma marca no canto pode dizer
se a figura é a medição ou uma redução dela
([Gráfico de linhas](component-line-chart#fidelity-and-performance)).

## Ajustar a escala à mão {#set-the-scale-by-hand}

O painel fixa um período do eixo de tempo e uma faixa do eixo de valor, cada lado de forma
independente. Todo campo confirma quando você sai dele; um campo vazio é um lado deixado
livre, ainda se ajustando sozinho.

| Campo | O que ele aceita |
|---|---|
| Período / Período (s a partir de agora) / Amostras | As duas pontas do eixo de tempo, pedidas nas palavras em que o eixo é desenhado: dois seletores de data e hora num eixo de relógio, dois números de segundos num eixo relativo, duas contagens de amostras num eixo de amostras. |
| Eixo de valor, mínimo e máximo | As pontas do eixo de valor do próprio gráfico. Num gráfico com subgráficos empilhados esta é só a régua do subgráfico de cima; o período de tempo move todos juntos. |
| Automático (um por eixo) | Devolve aquele eixo à janela que o gráfico montou: uma janela móvel volta a se mover, um eixo escrito com pontas fixas volta a elas, um escrito sem nenhuma volta ao ajuste livre dele. Esmaecido enquanto nada está fixado naquele eixo. |
| Carregar a janela mostrada | Preenche os quatro campos com a janela que está mesmo na tela, depois de todo zoom e deslocamento que você fez, então fixar o que você está olhando custa um toque. |

A fixação pertence a este gráfico nesta conexão: ela nunca é salva com a tela, outro
navegador olhando o mesmo gráfico tem a dele, e fechar a tela a solta. Uma janela fixada
que não contém nenhuma das amostras ainda assim desenha, e diz isso sob o subgráfico: "Nada
foi medido dentro da escala que você fixou."

## Mínimo, média e máximo {#minimum-average-and-maximum}

O painel é uma tabela com uma linha por série desenhada (uma série que o autor da tela
desligou não está na tela e não está na tabela; uma escondida pela legenda continua nela),
colorida com a tinta dela, com **Mínimo**, **Média** e **Máximo** sobre as amostras dentro
da janela mostrada, escritos do jeito que a estação escreve números. A linha acima da
tabela diz qual janela é essa: "A janela mostrada, até a amostra mais nova." ou "A janela
mostrada. A amostra mais nova está além da borda direita dela." quando você caminhou para
trás no histórico. A dica de uma linha diz quantas das amostras da janela eram leituras;
uma lacuna conta como uma amostra que a janela guardou e como nada nos três números, então
nenhuma média é tirada por cima de um buraco. Uma linha sem nada a ler escreve lacunas e diz
qual silêncio é: "Nada desta série foi amostrado na janela mostrada." ou "Toda amostra desta
série na janela mostrada é uma lacuna." Os números acompanham os dados ao vivo enquanto o
painel está aberto e são medidos sobre as próprias amostras, nunca sobre o desenho reduzido.

## Linhas de referência {#reference-lines}

Uma linha de referência é uma linha num valor, atravessando o subgráfico, ou num
instante, descendo por ele, com palavras dizendo por que ela está ali e uma cor para
distingui-la da próxima. O painel lista o que está desenhado, cada linha com o ✕ dela, e
**Remover todas**; sob a lista, um formulário pequeno desenha a próxima:

| Campo | O que ele aceita |
|---|---|
| Qual eixo | **Em um valor**, ou o eixo de tempo nas palavras dele: **Em um instante** (um seletor de data e hora), **Em um segundo (a partir de agora)** ou **Em uma amostra**. Trocar o eixo esvazia a posição, já que um valor e um instante não são o mesmo número. |
| Onde a linha vai | A posição naquele eixo. **Desenhar a linha** fica esmaecido até haver uma. |
| O que a linha diz | Texto opcional desenhado sobre a linha. |
| A cor da linha | Um seletor de cor; uma linha começa âmbar. |
| Desenhar a linha | Desenha a linha. A posição e o texto se esvaziam para a linha seguinte; o eixo e a cor ficam. |

As linhas pertencem ao gráfico à sua frente e a mais nada: elas não são salvas, o autor da
tela nunca fica sabendo, outra conexão não as vê, e fechar a tela as encerra. Uma anotação
que precisa durar mais que o olhar pertence a uma execução, onde o arquivo da própria
execução a registra ([Execuções e comentários](process-runs)).

## A janela de gráfico destacada {#the-detached-chart-window}

**Abrir em outra janela** abre a rota do próprio gráfico numa janela nova: uma janela de
verdade do aplicativo na estação, uma aba nova num navegador remoto. Pressionar de novo
traz a janela existente para a frente, em vez de abrir uma segunda. Existem duas rotas:

| Rota | O que ela mostra | Aberta de |
|---|---|---|
| `/chart/run/{id}` | O gráfico de datalog de uma execução gravada, relido do arquivo da execução: as séries, as anotações, os comentários e as faixas aprovadas do procedimento dela como estão configuradas agora. "Execução não encontrada" quando o id não resolve para nada. | O gráfico de uma execução nos [Históricos](histories) |
| `/chart/recipe/{id}` | O perfil de Degrau, Rampa e Patamar de uma receita, remontado a partir dos modelos salvos. "Receita não encontrada" quando o id não resolve para nada. | O editor de receitas e a prévia de receita de um procedimento |

A janela desenha sem o shell: sem trilho, sem barra de título, sem barra de status, só uma
barra no topo com o título do gráfico e **Sincronizar o X com o gráfico principal**
("Espelhar a ampliação e o deslocamento do eixo X com o gráfico principal"), ligada por padrão,
sobre o gráfico com a barra de ferramentas inteira dele. Enquanto a sincronia está ligada a
janela entra num canal identificado pela rota dela e acompanha o zoom e o deslocamento do
gráfico principal no eixo de tempo; desligada, ela navega sozinha. Cada rota exige o que
admite uma identidade ao que ela desenha: a janela de uma execução pede Ver históricos, a
mesma permissão que admite o navegador de execuções gravadas de onde ela é aberta, e a
janela de uma receita pede a política da própria página do Process, que qualquer uma das
quatro chaves do Process ou Ver históricos abre. Um papel sem o que a rota dele pede, ou um
rebaixado com a janela aberta, não consegue ler aquele gráfico pelo endereço. A janela é
somente leitura: os
comentários e as anotações são editados nos Históricos, não aqui.

## O que as ferramentas não fazem {#what-the-tools-do-not-do}

Nada na barra de ferramentas muda a tela: uma série escondida, uma fixação, uma linha e o estado da dica de valor
são todos estado deste gráfico nesta conexão, e uma tela reaberta amanhã abre limpa. Nada
na barra chega a um relatório: o PDF desenha o que o produtor dele monta, sem fixações,
sem linhas e sem ferramentas. A barra não exporta dado nenhum, só figuras: os números de
uma execução saem pelas exportações dos [Históricos](histories). E a barra não oferece
ferramenta que o desenho não consiga honrar: uma comparação de categorias nunca ganha zoom,
escala, estatísticas ou linhas, um gráfico de linhas preso numa janela fixa nunca ganha os
dois botões de ampliação, e um gráfico numa tela nunca ganha uma janela própria.
