chartcartesian — u_pbt_chartcartesian #
← Referência dos componentes · Índice do guia
Gráfico cartesiano: colunas, barras, linhas, áreas e nuvens de pontos, num eixo de categorias e num ou dois eixos de valores. O tipo define-se por série.
▶ Ver ao vivo — Aplicação de demonstração, mosaico Cartesian chart : a pré-visualização, o código que o produz e esta página, lado a lado.
Em resumo #
| Userobject | u_pbt_chartcartesian |
| Classe de itens | n_pbt_chartcartesian_series (of_item(key)) · n_pbt_chartcartesian_axis (of_axis(axis)) |
| Serve para | Comparar valores ao longo de um eixo — meses, produtos, regiões |
| Princípio | Você põe as categorias e depois as séries; as escalas, a grelha e a animação são connosco |
Arranque rápido #
// Local variables
string ls_months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}
double ld_sales[] = {420, 510, 480, 620, 700, 660}
// The categories FIRST : they fix how many values a series carries
uo_chart.of_set_categories(/*labels*/ ls_months)
uo_chart.of_add_series(/*key*/ "sales", /*label*/ "Revenue", /*type*/ u_pbt_chartcartesian.TYPE_BAR, /*values*/ ld_sales)
O tipo pertence à SÉRIE, não ao componente #
É a decisão de que decorre tudo o resto. Um componente por tipo — um para barras, outro para linhas — nunca pode produzir um combinado: barras encimadas por uma linha de objectivo, num segundo eixo. E é justamente a forma mais pedida num painel.
Aqui há um só componente, e cada série leva o seu is_type (TYPE_BAR, TYPE_LINE, TYPE_AREA, TYPE_SCATTER). Mudar o tipo de uma série não toca nas outras.
ib_secondary coloca uma série no segundo eixo de valores. É o que permite a um número de encomendas e a uma facturação conviverem: sem ele, uma das duas é uma linha plana rente ao eixo.
of_set_categoriesvem antes das séries: o seu número fixa quantos valores cada série deve levar.
// Local variables
double ld_target[] = {400, 500, 550, 600, 680, 720}
// Bars and a line in the SAME chart : the type belongs to the series
uo_chart.of_add_series(/*key*/ "target", /*label*/ "Target", /*type*/ u_pbt_chartcartesian.TYPE_LINE, /*values*/ ld_target)
// And its own scale, when the two do not share a unit
uo_chart.of_item(/*key*/ "target").ib_secondary = true
Propriedades #
| Propriedade | Tipo | Predefinição | Papel |
|---|---|---|---|
is_title | string | "" | Título do gráfico, mostrado por cima |
ib_show_legend | boolean | true | Mostra a legenda. Clicar numa entrada esconde a sua série — a forma mais barata de comparar duas séries em cinco |
is_legend_location | string | bottom | Onde fica a legenda (constantes LEGEND_*): por cima ou por baixo do traçado, ou ao lado — START/END põem-na em coluna de um lado, e o traçado cede-lhe o espaço. START/END são lógicas: seguem o sentido de leitura. Uma posição desconhecida vale o fundo, e relê-se assim |
ib_show_grid | boolean | true | As linhas de fundo, em cada valor redondo. Sem elas só a forma continua legível, nunca um valor |
ib_value_tooltip | boolean | true | O painel de valores: quando o rato passa sobre uma categoria, todas as séries e o seu valor aí, de uma vez, e uma retícula marca a coluna. Não é is_tooltip (herdado), que é a dica do componente inteiro — este segue o ponteiro e diz de que é feito o gráfico. Cada série escreve a sua linha com o seu próprio is_label_format; um valor ausente não tem linha |
is_orientation | string | vertical | Colunas ou barras (constantes ORIENTATION_*). Roda todo o referencial, linhas e áreas incluídas |
ib_stacked | boolean | false | Empilha as séries de barras em vez de as pôr lado a lado. Linhas e áreas nunca se empilham: dizem um nível |
is_stack_mode | string | value | Soma ou quota (constantes STACK_*). Em percentage cada pilha é levada a 100: o eixo lê então quotas, não totais — até -100 quando há quotas negativas. Não significa nada fora do empilhamento |
ib_enabled | boolean | true | Esbatido: o componente continua a mostrar o que mostra — um gráfico sem dados não é o mesmo que um gráfico que a aplicação desligou — mas deixa de responder: nem clique, nem tecla, nem entrada de legenda, e sai da ordem de tabulação. true por omissão |
ib_animated | boolean | true | O gráfico chega animado: as formas crescem, as fitas esbatem-se. Se a chegada se repete a cada actualização de um painel, é melhor desligá-la — uma chegada que recomeça de cinco em cinco segundos nunca termina. Um posto configurado para reduzir o movimento nunca anima |
ii_anim_duration | integer | 450 | Duração dessa chegada, em milissegundos (0 a 5000) |
is_anim_easing | string | ease-out | Curva da chegada (constantes EASING_*): linear, ease-out, back-out que passa e volta, bounce-out que ressalta, elastic-out que estala. É ela que dá carácter à animação |
ii_anim_delay | integer | 0 | Desfasamento entre duas séries à chegada, em milissegundos (0 a 1000). Entram então uma após a outra em vez de surgirem juntas, o que dá ao gráfico o seu sentido de leitura. 0 = todas ao mesmo tempo |
is_theme_style | string | "" | Estilo visual do componente (constantes THEME_STYLE_*); vazio = o da aplicação, seguido a cada mudança |
is_theme_mode | string | "" | Variante clara ou escura (constantes THEME_MODE_*); vazio = a da aplicação, seguida a cada mudança |
il_theme_accent | long | -1 | Cor de acento deste componente (-1 = acento do tema) |
is_tooltip | string | "" | Dica simples mostrada ao passar sobre o componente |
is_super_tooltip_title | string | "" | Título da dica enriquecida (tem precedência sobre is_tooltip) |
is_super_tooltip_text | string | "" | Texto da dica enriquecida (marcação rica aceite) |
is_super_tooltip_image | string | "" | Imagem da dica enriquecida |
Métodos #
| Método | Papel | |
|---|---|---|
of_set_categories ( string as_labels[] ) | As etiquetas do eixo de categorias. A chamar antes das séries. Devolve 0 uma vez aplicado, -2 se o componente não estiver criado | |
of_set_value_labels ( string as_labels[] ) | Etiquetas no eixo dos valores. Vazio — o caso normal — esse eixo carrega números. Preenchido, carrega faixas como o eixo de categorias: o quadro de duas categorias em que se desenha um mapa de calor. Devolve 0 uma vez aplicado, -2 se o componente não estiver criado | |
of_get_value_labels ( ref string as_labels[] ) | Preenche as_labels[] com o que o eixo dos valores carrega agora e devolve o número. Zero = carrega números | |
of_add_heat_series ( string as_key, string as_label, long al_x[], long al_y[], double ad_weight[] ) | Um mapa de calor: uma célula por par (categoria, etiqueta de valor), colorida pelo seu peso. al_x é o posto da categoria e al_y o da etiqueta, ambos a partir de 1 — os postos de um array PowerScript, que um duplo ciclo escreve sem cálculo. Definir antes as duas listas. Devolve 0 uma vez adicionada, -5 se a chave estiver vazia, contiver / ou ` | , ou já estiver tomada, -2` se o componente não estiver criado |
of_add_ohlc_series ( string as_key, string as_label, double ad_open[], double ad_high[], double ad_low[], double ad_close[] ) | Uma série OHLC: a amplitude do mínimo ao máximo, um traço à esquerda para a abertura e outro à direita para o fecho. Quatro números por ponto, e o eixo lê-se pelo máximo e pelo mínimo — os outros dois estão dentro por construção. Os quatro arrays são truncados ao mais curto. Devolve 0 uma vez adicionada, -5 se a chave estiver vazia, contiver / ou ` | , ou já estiver tomada, -2` se o componente não estiver criado |
of_add_candle_series ( string as_key, string as_label, double ad_open[], double ad_high[], double ad_low[], double ad_close[] ) | Os mesmos quatro números, desenhados em velas: um pavio do mínimo ao máximo e um corpo cheio entre a abertura e o fecho. Um doji — abertura igual ao fecho — guarda um pixel de corpo, para continuar a ser uma linha que o olho encontra. Devolve 0 uma vez adicionada, -5 se a chave estiver vazia, contiver / ou ` | , ou já estiver tomada, -2` se o componente não estiver criado |
of_set_series_ohlc ( string as_key, double ad_open[], double ad_high[], double ad_low[], double ad_close[] ) | Novas cotações para uma série financeira já traçada. O que of_set_series_values é para uma série de valores. Devolve 0 uma vez aplicado, -5 se nenhuma série tiver esta chave ou se não for financeira, -2 se o componente não estiver criado | |
of_get_series_ohlc ( string as_key, ref double ad_open[], ref double ad_high[], ref double ad_low[], ref double ad_close[] ) | Preenche os quatro arrays com o que a série carrega agora e devolve o número de pontos. Uma série não financeira devolve 0 | |
of_add_series ( string as_key, string as_label, string as_type, double ad_values[] { , long al_color } ) | Adiciona uma série com o seu tipo — TYPE_BAR, TYPE_LINE, TYPE_AREA, TYPE_SCATTER ou TYPE_STEPLINE; a sobrecarga recebe também a sua cor (RGB()), senão a paleta escolhe. Um valor NULL (SetNull) é um buraco: aí nada é desenhado, etiquetado nem clicável, e uma linha interrompe-se. Uma chave já tomada é recusada, nunca substituída: of_set_series_values e o handle of_item mudam uma série que existe. Devolve 0 uma vez adicionada, -5 se o tipo não for um destes cinco (um mapa de calor e as séries financeiras têm o seu método), ou se a chave estiver vazia, contiver / ou ` | , ou já estiver tomada, -2` se o componente não estiver criado |
of_set_series_values ( string as_key, double ad_values[] ) | Novos valores para uma série já traçada, o resto intacto. É a chamada de um painel vivo: a série mantém a sua identidade, por isso as formas deslizam em vez de saltar. Um valor NULL é um buraco. Devolve 0 uma vez aplicado, -5 se nenhuma série tiver esta chave ou se tiver pontos ou cotações (of_set_series_points, of_set_series_ohlc substituem-nos), -2 se o componente não estiver criado | |
of_append_values ( string as_key, double ad_values[], long al_max_points ) | Um gráfico em direto: acrescenta novos valores no fim de uma série e retira os mais antigos assim que tiver mais de al_max_points (0 = sem limite). Só viajam os valores novos — a série não é reenviada a cada tique. A combinar com of_append_categories. Devolve 0 uma vez aplicado, -5 se nenhuma série tiver esta chave ou se tiver pontos ou cotações, -2 se o componente não estiver criado | |
of_append_categories ( string as_labels[], long al_max_count ) | Novas categorias no fim do eixo, as mais antigas retiradas além de al_max_count (0 = sem limite): as etiquetas de um gráfico em direto deslizam com os seus valores. Devolve 0 uma vez aplicado, -2 se o componente não estiver criado | |
of_add_point_series ( string as_key, string as_label, double ad_x[], double ad_y[] { , double ad_weight[] } ) | Uma série posicionada por valor nos dois eixos: x diz onde ao longo do eixo de categorias, y a que altura. Esse eixo deixa então de ser um eixo de categorias — passa a ser um segundo eixo de valores, com as suas graduações. Uma sobrecarga aceita um peso por ponto, que dimensiona a bolha. Devolve 0 uma vez adicionada, -5 se a chave estiver vazia, contiver / ou ` | , ou já estiver tomada, -2` se o componente não estiver criado |
of_set_series_points ( string as_key, double ad_x[], double ad_y[], double ad_weight[] ) | Novos pontos para uma série que já os carrega. O que of_set_series_values é para uma série de valores. Devolve 0 uma vez aplicado, -5 se nenhuma série tiver esta chave ou se tiver valores ou cotações, -2 se o componente não estiver criado | |
of_get_series_points ( string as_key, ref double ad_x[], ref double ad_y[], ref double ad_weight[] ) | Preenche os três arrays com o que a série carrega agora e devolve o número de pontos. Uma série de valores não responde nada em ad_x: não tem abcissa própria | |
of_get_series_values ( string as_key, ref double ad_values[] ) | Preenche ad_values[] com o que a série carrega agora e devolve o número. Leitura viva : consulta o gráfico, não o último envio | |
of_remove_series ( string as_key ) | Retira uma série; as outras mantêm a cor e a visibilidade. O seu handle (of_item) é destruído com ela: um of_item seguinte na mesma chave cria um novo. Devolve 0 uma vez retirada, -5 se nenhuma série tiver esta chave, -2 se o componente não estiver criado | |
of_clear ( ) | Esvazia o gráfico — séries e categorias; os handles de série vão com elas. Os eixos mantêm as suas definições e as suas secções. Devolve 0 uma vez esvaziado, -2 se o componente não estiver criado | |
of_set_value_format ( integer ai_decimals, string as_prefix, string as_suffix, boolean ab_thousands ) | Formato dos números de todo o gráfico — eixos, etiquetas e painel dos valores: decimais, prefixo, sufixo, separador de milhares. Os separadores decimal e de milhares são os da língua de apresentação. Apaga também o formato próprio de cada eixo. Devolve 0 uma vez aplicado, -2 se o componente não estiver criado | |
of_set_value_format ( string as_axis, integer ai_decimals, string as_prefix, string as_suffix, boolean ab_thousands ) | O formato de um eixo (AXIS_VALUE, AXIS_VALUE2, ou AXIS_CATEGORY quando tem números): as suas graduações, e as etiquetas e o painel das séries traçadas nele — um montante de um lado, um número de encomendas do outro. Devolve 0 uma vez aplicado, -5 se o eixo não for um dos AXIS_*, -2 se o componente não estiver criado | |
of_clear_value_format ( ) | Volta ao formato predefinido. Devolve 0 uma vez aplicado, -2 se o componente não estiver criado | |
of_item ( string as_key ) | Devolve a pega de uma série, para a alterar depois | |
of_axis ( string as_axis ) | Devolve a pega de um eixo (AXIS_CATEGORY, AXIS_VALUE, AXIS_VALUE2), para o ajustar depois. Qualquer outro papel não devolve nenhuma pega (IsValid() é falso) | |
of_add_axis_section ( string as_axis, string as_key, double ad_from, double ad_to, long al_color ) | Uma faixa através do traçado, por trás dos dados: « abaixo de 200 é mau ». Desenhada sob as formas, nunca compete com elas. No eixo das categorias, ad_from e ad_to são posições contadas a partir de 1 (de 2 a 3 cobre a segunda e a terceira categoria). Devolve 0 uma vez adicionada, -5 se o eixo não for um dos AXIS_* ou se a chave estiver vazia, contiver / ou ` | , ou já estiver tomada nesse eixo, -2` se o componente não estiver criado |
of_add_axis_threshold ( string as_axis, string as_key, double ad_at, long al_color, integer ai_thickness ) | Uma linha através do traçado num valor — um objectivo, um limite. O mesmo registo das faixas, mas desenhada para ser vista. Devolve 0 uma vez adicionada, -5 se o eixo não for um dos AXIS_* ou se a chave estiver vazia, contiver / ou ` | , ou já estiver tomada nesse eixo, -2` se o componente não estiver criado |
of_clear_axis_sections ( string as_axis ) | Retira todas as faixas e todos os limiares de um eixo. Devolve 0 uma vez esvaziado, -5 se o eixo não for um dos AXIS_*, -2 se o componente não estiver criado | |
of_reset ( ) | Esvazia o gráfico — handles de série e de eixo incluídos — e repõe todas as propriedades no seu valor de origem. Devolve 0 uma vez feito, -2 se o componente não estiver criado |
Sem chave (modo demo), o gráfico só desenha as suas 3 primeiras séries, legenda incluída. As outras ficam no modelo —
of_count,of_get_series_valuese os seus handles veem-nas — e a chave definida mostra-as sem que tenha de reenviar nada.
Eventos #
| Evento | Disparado quando |
|---|---|
ue_point_clicked (string as_key, long al_index, double ad_value) | Uma barra, um ponto, uma célula ou uma cotação foi clicada — ou confirmada com Enter: a chave da série, a posição do ponto na série, a partir de 1, e o seu valor — o do ponto seja qual for a forma da série: o y de uma nuvem, o peso de uma célula de calor, o fecho de uma cotação. No teclado, Esquerda/Direita percorrem as categorias e Cima/Baixo escolhem a série que o painel sublinha; uma série de pontos ou um mapa de calor escolhido percorre-se ponto a ponto. Um buraco não tem nada para clicar |
ue_series_toggled (string as_key, boolean ab_visible) | O utilizador ocultou ou voltou a mostrar uma série com um clique na legenda. O que o gráfico mostra deixa então de ser o que a aplicação enviou. Definir ib_visible é um valor, como marcar uma caixa: este evento comunica o gesto do utilizador |
A animação é uma entrada, não um cálculo: a geometria final é escrita de imediato e só a chegada é tocada. Um gráfico nunca mostrado — nascido fora do ecrã, num separador que ninguém abre — mostra portanto as barras certas, em silêncio.
Propriedades de item #
| Propriedade | Tipo | Predefinição | Papel |
|---|---|---|---|
is_label | string | "" | O nome da série, tal como a legenda o mostra |
is_type | string | bar | bar · line · area · scatter · stepline (constantes TYPE_*). Muda o desenho desta série apenas — é isso que faz um gráfico combinado. Só um tipo da mesma família é aceite: uma série de valores entre bar, line, area, scatter e stepline, uma série financeira entre ohlc e candle; qualquer outro é ignorado e is_type relê o tipo mantido |
il_color | long | -1 | Cor da série (RGB()). -1 enquanto nenhuma estiver definida: a paleta escolhe |
ib_visible | boolean | true | false oculta uma série sem a retirar — a legenda guarda o caminho de volta. Como uma caixa de verificação, é um valor definido: ue_series_toggled comunica o clique do utilizador na legenda |
ib_secondary | boolean | false | Traça a série no segundo eixo. É assim que um número e um montante vivem no mesmo gráfico |
ib_data_labels | boolean | false | Escreve o valor de cada ponto ao seu lado. Desligado por omissão: em cinquenta pontos as etiquetas tapam o desenho que explicam |
is_label_format | string | "" | O que diz cada etiqueta e cada linha do painel: #y# o valor, #x# a categoria (o x de uma série de pontos, a coluna de uma célula de calor), #v# a linha de uma célula de calor, #label# o nome da série, #open# #high# #low# #close# as cotações; o resto escreve-se tal como está — "$#y#K". Vazio = o valor sozinho. Uma etiqueta escrita dentro de uma barra empilhada fica a preto ou a branco, conforme a sua barra suporta |
id_smoothness | double | 1 | Só linhas e áreas: quão arredondada é desenhada a linha, 0 = segmentos retos, 1 = plenamente curva, como a desenha o LiveCharts. Uma linha em escada ignora-o — diz que o nível se MANTEVE até à categoria seguinte, uma curva diria que derivou. Uma curva pode passar para além dos seus pontos; é cortada no quadro do traçado e nunca pinta sobre os rótulos dos eixos |
ib_fill | boolean | true | Linhas e áreas: a aguada sob o traço, até ao eixo, no tom da série. É a remoção que é o acto deliberado — para uma linha posta por cima de outra coisa (colunas, bandas de eixo coloridas) que a aguada esconderia |
il_fill_color | long | -1 | A cor dessa aguada. -1 = a da própria linha |
is_marker | string | "circle" | Linhas, escadas e nuvens de pontos: a FORMA do marcador em cada ponto (constantes MARKER_*: none, circle, square, triangle, diamond). Não é decoração — duas linhas que se cruzam, impressas a cinzento, distinguem-se pelo seu marcador e por mais nada |
ii_thickness | integer | 2 | Linhas e áreas: a espessura do traço, em píxeis |
ii_point_count | integer | 0 | Quantos pontos carrega esta série — valores ou pares (x, y) (só leitura) |
il_cold_color | long | -1 | Só mapas de calor: o extremo FRIO da escala, a leitura mais leve. -1 = a escala própria do componente, um só azul, do muito pálido ao intenso |
il_mid_color | long | -1 | O ponto MÉDIO. Três pontos e não dois: interpolar de uma ponta à outra desbota o meio da escala, onde está a maior parte das leituras. -1 = o azul médio do componente |
il_hot_color | long | -1 | O extremo QUENTE, a leitura mais pesada. É o que a legenda mostra. -1 = o azul intenso do componente |
il_up_color | long | -1 | Só séries financeiras: a cor de um ponto que fecha acima da sua abertura. -1 = o verde do componente |
il_down_color | long | -1 | E a de um ponto que fecha abaixo. Duas cores porque o sentido é o que se lê num gráfico assim — uma só ocultá-lo-ia. -1 = o vermelho do componente |
Propriedades de eixo #
| Propriedade | Tipo | Predefinição | Papel |
|---|---|---|---|
is_title | string | "" | Título escrito ao longo do eixo. Vazio = sem título, e sem espaço reservado para um |
id_min | double | NULL | Limite inferior imposto. Ganha aos dados e não é arredondado: quem escreve 0 quer 0. NULL (SetNull) não impõe nada: o eixo volta a seguir os seus dados, e um limite livre relê-se NULL (IsNull), nunca 0. Livre, um eixo de valores só inclui o zero se uma barra ou uma área assentar nele: cotações e linhas leem-se no seu próprio intervalo |
id_max | double | NULL | Limite superior imposto, mesma regra. O que o ultrapassa é cortado na borda do traçado |
id_step | double | 0 | Distância entre duas linhas de grelha, em valores. 0 = um passo redondo lido do intervalo |
ii_label_rotation | integer | 0 | Rotação das etiquetas deste eixo, em graus (-90 a 90) — nomes de categoria ou graduações de valores. Doze nomes de meses só cabem por baixo de um gráfico inclinados; quando ainda não cabem, o gráfico escreve um em cada N, sempre o primeiro e o último |
ib_separator | boolean | true | As suas linhas de grelha. Um eixo de categorias raramente precisa delas, um de valores quase sempre |
ii_section_count | integer | 0 | Quantas faixas e limiares este eixo carrega (só leitura) |
ib_logarithmic | boolean | false | Só eixos de valores: uma escala logarítmica, graduada por décadas (1, 10, 100…), cada década com a mesma altura — para números que abrangem várias ordens de grandeza. O zero e os valores negativos não têm lugar nela e não são desenhados |
Exemplos #
Ajustar a animação conforme o ecrã #
// A dashboard that refreshes every few seconds : no arrival animation
uo_chart.ib_animated = false
// Elsewhere, a slower arrival that is actually seen
uo_chart.ii_anim_duration = 1200
Abrir as linhas por trás de um ponto #
// Event ue_point_clicked of uo_chart : the series key, the position of the
// point (from 1) and its value - enough to open the rows behind it
string ls_month
// On a series of values, the position IS the rank of the category
ls_month = is_months[al_index]
wf_open_orders(/*series*/ as_key, /*month*/ ls_month, /*amount*/ ad_value)
Um painel vivo #
// Timer event of the window : new values for the same series, so the bars
// SLIDE to their new height instead of replaying their arrival
double ld_sales[]
// Read the figures, then hand them to the series already on the chart
ld_sales = wf_read_sales()
uo_chart.of_set_series_values(/*key*/ "sales", /*values*/ ld_sales)
Um gráfico em direto que desliza #
// Timer event of the window, every second : ONE new reading. Only that value
// travels ; past sixty, the oldest leaves on both the axis and the series
// Local variables
string ls_time[]
double ld_cpu[]
// The time of the reading on the axis, the reading itself in the series
ls_time[1] = String(Now(), "hh:mm:ss")
ld_cpu[1] = wf_read_cpu()
uo_chart.of_append_categories(/*labels*/ ls_time, /*max_count*/ 60)
uo_chart.of_append_values(/*key*/ "cpu", /*values*/ ld_cpu, /*max_points*/ 60)
Uma medida em falta, e o gráfico como imagem #
// March was not measured : a NULL value is a gap, the line is cut there
// Local variables
double ld_temp[] = {18.5, 19.2, 0, 21.4}
// The third reading is missing : NULL, not zero
SetNull(ld_temp[3])
uo_chart.of_add_series(/*key*/ "temp", /*label*/ "Temperature", /*type*/ u_pbt_chartcartesian.TYPE_LINE, /*values*/ ld_temp)
// The chart as it is on screen, title and legend included, to a PNG file
uo_chart.of_save_as_png(/*path*/ "C:\Reports\temperature.png")
Uma faixa e um objetivo no eixo dos valores #
// A pale red band below 200 and a target line at 600, behind the bars
uo_chart.of_add_axis_section(/*axis*/ u_pbt_chartcartesian.AXIS_VALUE, /*key*/ "low", /*from*/ 0, /*to*/ 200, /*color*/ RGB(/*red*/ 255, /*green*/ 220, /*blue*/ 220))
uo_chart.of_add_axis_threshold(/*axis*/ u_pbt_chartcartesian.AXIS_VALUE, /*key*/ "target", /*at*/ 600, /*color*/ RGB(/*red*/ 200, /*green*/ 70, /*blue*/ 70), /*thickness*/ 2)
// The value axis says what it measures
uo_chart.of_axis(/*axis*/ u_pbt_chartcartesian.AXIS_VALUE).is_title = "Sales ($K)"
Boas práticas #
- Ponha as categorias antes das séries. O seu número diz o que uma série deve conter; ao contrário não pode funcionar.
- Um segundo eixo justifica-se, não se sofre. Duas escalas no mesmo desenho enganam o olho: só o traga quando as unidades forem mesmo diferentes.
- Corte a animação num painel que se actualiza. Uma chegada que recomeça de cinco em cinco segundos nunca termina, e cansa em vez de ajudar.
- As barras partem do zero, e o componente cumpre-o: o zero entra no eixo assim que uma barra ou uma área assenta nele. Um gráfico de barras truncado exagera cada diferença. Linhas, nuvens e cotações leem-se no seu próprio intervalo.
- O gráfico mantém o sentido matemático numa aplicação da direita para a esquerda: categorias da esquerda para a direita, eixo dos valores à esquerda. Só a legenda
START/ENDsegue o sentido de leitura. - Empilhe para ler um total, justaponha para comparar. Não são dois estilos, são duas perguntas diferentes.
ue_point_clickeddá a ordem: use-a para abrir a lista exacta por trás desse ponto, não o ecrã de pesquisa.
Herdado da base comum #
Estes membros existem em todos os componentes visuais — não são próprios deste. São detalhados uma só vez, nos capítulos transversais; esta tabela apenas diz onde os ler.
| Membros | Função | Detalhado em |
|---|---|---|
of_count · of_keys_at · of_has | Percorrer o que o componente contém | 3.2 Os items |
of_reset | Repor o componente a zero | 3.6 Repor um componente a zero: of_reset() |
of_register_shortcut · of_clear_shortcuts | Atalhos de teclado do componente | 3.5 Os atalhos de teclado |
of_is_created · of_is_ready · of_get_last_error | Se nasceu, se está pronto, o que falhou | 3.7 Diagnóstico |
of_save_as_png · of_save_as_jpg | Exportar a renderização como imagem | 3.8 Exportar a representação como imagem |
of_set_redraw | Agrupar as alterações num único repinte | 3.10 Boas práticas |
of_preload_icons | Ícones mostrados sem atraso | Apresentação instantânea: of_icon |
of_set_translation | Traduzir uma legenda do componente | 5.2 Adaptar uma etiqueta: of_set_translation |
of_focus_webview | Dar o foco ao componente | 6.4 Teclado e focus |
of_print · of_print_to_pdf | Imprimir, ou escrever um PDF | 6.9 Imprimir |
of_set_property · of_get_property · of_component_name | Controlar uma propriedade pelo nome | 3.1 O motor de propriedades |
Duas ajudas não são herdadas: of_icon e of_escape_markup vivem em n_pbt_utils. Declare um — n_pbt_utils lnv_utils, nada a criar — e chame-as nele.