chartcartesian — u_pbt_chartcartesian #
← Riferimento dei componenti · Sommario della guida
Grafico cartesiano: colonne, barre, linee, aree e nuvole di punti, su un asse di categorie e uno o due assi di valori. Il tipo si imposta per serie.
▶ Vederlo dal vivo — Applicazione dimostrativa, riquadro Cartesian chart : l'anteprima, il codice che lo produce e questa pagina, affiancati.
In breve #
| Userobject | u_pbt_chartcartesian |
| Classe di elementi | n_pbt_chartcartesian_series (of_item(key)) · n_pbt_chartcartesian_axis (of_axis(axis)) |
| Serve a | Confrontare valori lungo un asse — mesi, prodotti, regioni |
| Principio | Voi ponete le categorie poi le serie; le scale, la griglia e l'animazione sono affar nostro |
Avvio rapido #
// 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)
Il tipo appartiene alla SERIE, non al componente #
È la decisione da cui discende tutto il resto. Un componente per tipo — uno per le barre, uno per le linee — non può mai produrre un combinato: barre sormontate da una linea di obiettivo, su un secondo asse. Ed è proprio la forma più richiesta di un cruscotto.
Qui c'è un solo componente, e ogni serie porta il suo is_type (TYPE_BAR, TYPE_LINE, TYPE_AREA, TYPE_SCATTER). Cambiare il tipo di una serie non tocca le altre.
ib_secondary mette una serie sul secondo asse dei valori. È ciò che permette a un numero di ordini e a un fatturato di convivere: senza, una delle due è una linea piatta a filo dell'asse.
of_set_categoriesviene prima delle serie: il loro numero fissa quanti valori ogni serie deve portare.
// 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
Proprietà #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_title | string | "" | Titolo del grafico, mostrato sopra |
ib_show_legend | boolean | true | Mostra la legenda. Cliccare una voce nasconde la sua serie — il modo più economico di confrontare due serie su cinque |
is_legend_location | string | bottom | Dove va la legenda (costanti LEGEND_*): sopra o sotto il tracciato, oppure accanto — START/END la mettono in colonna su un lato, e il tracciato le cede lo spazio. START/END sono logiche: seguono il senso di lettura. Una posizione sconosciuta vale il basso, e si rilegge così |
ib_show_grid | boolean | true | Le righe di sfondo, a ogni valore tondo. Senza, resta leggibile solo la forma, mai un valore |
ib_value_tooltip | boolean | true | Il pannello dei valori: quando il mouse passa su una categoria, tutte le serie e il loro valore lì, in una volta, e un mirino segna la colonna. Non è is_tooltip (ereditato), che è il tooltip dell'intero componente — questo segue il puntatore e dice di cosa è fatto il grafico. Ogni serie scrive la sua riga con il proprio is_label_format; un valore assente non ha riga |
is_orientation | string | vertical | Colonne o barre (costanti ORIENTATION_*). Ruota tutto il sistema di riferimento, linee e aree comprese |
ib_stacked | boolean | false | Impila le serie di barre invece di affiancarle. Linee e aree non si impilano mai: dicono un livello |
is_stack_mode | string | value | Somma o quota (costanti STACK_*). In percentage ogni pila è portata a 100: l'asse legge allora quote, non totali — fino a -100 quando alcune quote sono negative. Non significa nulla fuori dall'impilamento |
ib_enabled | boolean | true | In grigio: il componente continua a mostrare ciò che mostra — un grafico senza dati non è la stessa cosa di un grafico che l'applicazione ha spento — ma smette di rispondere: né clic, né tasti, né voci di legenda, ed esce dall'ordine di tabulazione. true per impostazione predefinita |
ib_animated | boolean | true | Il grafico arriva animato: le forme crescono, i nastri sfumano. Se l'arrivo si ripete a ogni aggiornamento di un cruscotto, meglio spegnerlo — un arrivo che ricomincia ogni cinque secondi non finisce mai. Una postazione impostata su meno movimento non anima mai |
ii_anim_duration | integer | 450 | Durata di quell'arrivo, in millisecondi (da 0 a 5000) |
is_anim_easing | string | ease-out | Curva dell'arrivo (costanti EASING_*): linear, ease-out, back-out che supera e torna, bounce-out che rimbalza, elastic-out che scatta. È lei a dare carattere all'animazione |
ii_anim_delay | integer | 0 | Sfasamento tra due serie all'arrivo, in millisecondi (da 0 a 1000). Entrano allora una dopo l'altra invece di comparire insieme, il che dà al grafico il suo senso di lettura. 0 = tutte insieme |
is_theme_style | string | "" | Stile visivo del componente (costanti THEME_STYLE_*); vuoto = quello dell'applicazione, seguito a ogni cambio |
is_theme_mode | string | "" | Variante chiara o scura (costanti THEME_MODE_*); vuoto = quella dell'applicazione, seguita a ogni cambio |
il_theme_accent | long | -1 | Colore di accento di questo componente (-1 = accento del tema) |
is_tooltip | string | "" | Descrizione comando semplice mostrata al passaggio sul componente |
is_super_tooltip_title | string | "" | Titolo della descrizione arricchita (prevale su is_tooltip) |
is_super_tooltip_text | string | "" | Testo della descrizione arricchita (markup ricco accettato) |
is_super_tooltip_image | string | "" | Immagine della descrizione arricchita |
Metodi #
| Metodo | Ruolo | |
|---|---|---|
of_set_categories ( string as_labels[] ) | Le etichette dell'asse delle categorie. Da chiamare prima delle serie. Restituisce 0 una volta applicato, -2 se il componente non è creato | |
of_set_value_labels ( string as_labels[] ) | Etichette sull'asse dei valori. Vuoto — il caso normale — quell'asse porta numeri. Riempito, porta fasce come l'asse delle categorie: il riquadro a due categorie in cui si disegna una mappa di calore. Restituisce 0 una volta applicato, -2 se il componente non è creato | |
of_get_value_labels ( ref string as_labels[] ) | Riempie as_labels[] con ciò che l'asse dei valori porta ora e restituisce il numero. Zero = porta numeri | |
of_add_heat_series ( string as_key, string as_label, long al_x[], long al_y[], double ad_weight[] ) | Una mappa di calore: una cella per coppia (categoria, etichetta di valore), colorata dal suo peso. al_x è il rango della categoria e al_y quello dell'etichetta, entrambi da 1 — i ranghi di un array PowerScript, che un doppio ciclo scrive senza calcoli. Impostare prima le due liste. Restituisce 0 una volta aggiunta, -5 se la chiave è vuota, contiene / o ` | , o è già presa, -2` se il componente non è creato |
of_add_ohlc_series ( string as_key, string as_label, double ad_open[], double ad_high[], double ad_low[], double ad_close[] ) | Una serie OHLC: l'intervallo dal minimo al massimo, un trattino a sinistra per l'apertura e uno a destra per la chiusura. Quattro numeri per punto, e l'asse si legge sul massimo e sul minimo — gli altri due vi stanno dentro per costruzione. I quattro array sono troncati al più corto. Restituisce 0 una volta aggiunta, -5 se la chiave è vuota, contiene / o ` | , o è già presa, -2` se il componente non è creato |
of_add_candle_series ( string as_key, string as_label, double ad_open[], double ad_high[], double ad_low[], double ad_close[] ) | Gli stessi quattro numeri, disegnati a candele: uno stoppino dal minimo al massimo e un corpo pieno fra apertura e chiusura. Un doji — apertura uguale alla chiusura — conserva un pixel di corpo, per restare una linea che l'occhio ritrova. Restituisce 0 una volta aggiunta, -5 se la chiave è vuota, contiene / o ` | , o è già presa, -2` se il componente non è creato |
of_set_series_ohlc ( string as_key, double ad_open[], double ad_high[], double ad_low[], double ad_close[] ) | Nuove quotazioni per una serie finanziaria già tracciata. Ciò che of_set_series_values è per una serie di valori. Restituisce 0 una volta applicato, -5 se nessuna serie porta questa chiave o se non è finanziaria, -2 se il componente non è creato | |
of_get_series_ohlc ( string as_key, ref double ad_open[], ref double ad_high[], ref double ad_low[], ref double ad_close[] ) | Riempie i quattro array con ciò che la serie porta ora e restituisce il numero di punti. Una serie non finanziaria risponde 0 | |
of_add_series ( string as_key, string as_label, string as_type, double ad_values[] { , long al_color } ) | Aggiunge una serie con il suo tipo — TYPE_BAR, TYPE_LINE, TYPE_AREA, TYPE_SCATTER o TYPE_STEPLINE; l'overload prende anche il suo colore (RGB()), altrimenti sceglie la tavolozza. Un valore NULL (SetNull) è un buco: lì nulla viene disegnato, etichettato né cliccato, e una linea si interrompe. Una chiave già presa è rifiutata, mai sostituita: of_set_series_values e l'handle of_item cambiano una serie che esiste. Restituisce 0 una volta aggiunta, -5 se il tipo non è uno di questi cinque (una mappa di calore e le serie finanziarie hanno il loro metodo), o se la chiave è vuota, contiene / o ` | , o è già presa, -2` se il componente non è creato |
of_set_series_values ( string as_key, double ad_values[] ) | Nuovi valori per una serie già tracciata, il resto invariato. È la chiamata di un cruscotto vivo: la serie mantiene la sua identità, quindi le forme scivolano invece di saltare. Un valore NULL è un buco. Restituisce 0 una volta applicato, -5 se nessuna serie porta questa chiave o se porta punti o quotazioni (of_set_series_points, of_set_series_ohlc li sostituiscono), -2 se il componente non è creato | |
of_append_values ( string as_key, double ad_values[], long al_max_points ) | Un grafico in diretta: aggiunge nuovi valori alla fine di una serie e toglie i più vecchi appena ne porta più di al_max_points (0 = nessun limite). Viaggiano solo i nuovi valori — la serie non viene rinviata a ogni tic. Da abbinare a of_append_categories. Restituisce 0 una volta applicato, -5 se nessuna serie porta questa chiave o se porta punti o quotazioni, -2 se il componente non è creato | |
of_append_categories ( string as_labels[], long al_max_count ) | Nuove categorie alla fine dell'asse, le più vecchie tolte oltre al_max_count (0 = nessun limite): le etichette di un grafico in diretta scivolano con i suoi valori. Restituisce 0 una volta applicato, -2 se il componente non è creato | |
of_add_point_series ( string as_key, string as_label, double ad_x[], double ad_y[] { , double ad_weight[] } ) | Una serie posizionata per valore su entrambi gli assi: x dice dove lungo l'asse delle categorie, y a che altezza. Quell'asse smette allora di essere un asse di categorie — diventa un secondo asse di valori, con le sue graduazioni. Un overload prende un peso per punto, che dimensiona la bolla. Restituisce 0 una volta aggiunta, -5 se la chiave è vuota, contiene / o ` | , o è già presa, -2` se il componente non è creato |
of_set_series_points ( string as_key, double ad_x[], double ad_y[], double ad_weight[] ) | Nuovi punti per una serie che ne porta già. Ciò che of_set_series_values è per una serie di valori. Restituisce 0 una volta applicato, -5 se nessuna serie porta questa chiave o se porta valori o quotazioni, -2 se il componente non è creato | |
of_get_series_points ( string as_key, ref double ad_x[], ref double ad_y[], ref double ad_weight[] ) | Riempie i tre array con ciò che la serie porta ora e restituisce il numero di punti. Una serie di valori non risponde nulla in ad_x: non ha una x propria | |
of_get_series_values ( string as_key, ref double ad_values[] ) | Riempie ad_values[] con ciò che la serie porta ora e restituisce il numero. Lettura viva : interroga il grafico, non l'ultimo invio | |
of_remove_series ( string as_key ) | Rimuove una serie; le altre conservano colore e visibilità. Il suo handle (of_item) è distrutto con essa: un of_item successivo sulla stessa chiave ne crea uno nuovo. Restituisce 0 una volta rimossa, -5 se nessuna serie porta questa chiave, -2 se il componente non è creato | |
of_clear ( ) | Svuota il grafico — serie e categorie; gli handle delle serie se ne vanno con esse. Gli assi conservano le loro impostazioni e le loro sezioni. Restituisce 0 una volta svuotato, -2 se il componente non è creato | |
of_set_value_format ( integer ai_decimals, string as_prefix, string as_suffix, boolean ab_thousands ) | Formato dei numeri di tutto il grafico — assi, etichette e pannello dei valori: decimali, prefisso, suffisso, separatore delle migliaia. I separatori decimale e delle migliaia sono quelli della lingua di visualizzazione. Cancella anche il formato proprio di ogni asse. Restituisce 0 una volta applicato, -2 se il componente non è creato | |
of_set_value_format ( string as_axis, integer ai_decimals, string as_prefix, string as_suffix, boolean ab_thousands ) | Il formato di un asse (AXIS_VALUE, AXIS_VALUE2, o AXIS_CATEGORY quando porta numeri): le sue graduazioni, e le etichette e il pannello delle serie tracciate su di esso — un importo da un lato, un numero di ordini dall'altro. Restituisce 0 una volta applicato, -5 se l'asse non è uno degli AXIS_*, -2 se il componente non è creato | |
of_clear_value_format ( ) | Torna al formato predefinito. Restituisce 0 una volta applicato, -2 se il componente non è creato | |
of_item ( string as_key ) | Restituisce la maniglia di una serie, per modificarla in seguito | |
of_axis ( string as_axis ) | Restituisce la maniglia di un asse (AXIS_CATEGORY, AXIS_VALUE, AXIS_VALUE2), per regolarlo poi. Qualsiasi altro ruolo non restituisce nessuna maniglia (IsValid() è falso) | |
of_add_axis_section ( string as_axis, string as_key, double ad_from, double ad_to, long al_color ) | Una fascia attraverso il tracciato, dietro i dati: « sotto 200 è male ». Disegnata sotto le forme, non fa mai loro concorrenza. Sull'asse delle categorie, ad_from e ad_to sono posizioni contate a partire da 1 (da 2 a 3 copre la seconda e la terza categoria). Restituisce 0 una volta aggiunta, -5 se l'asse non è uno degli AXIS_* o se la chiave è vuota, contiene / o ` | , o è già presa su quell'asse, -2` se il componente non è creato |
of_add_axis_threshold ( string as_axis, string as_key, double ad_at, long al_color, integer ai_thickness ) | Una linea attraverso il tracciato a un valore — un obiettivo, un limite. Stesso registro delle fasce, ma disegnata per essere vista. Restituisce 0 una volta aggiunta, -5 se l'asse non è uno degli AXIS_* o se la chiave è vuota, contiene / o ` | , o è già presa su quell'asse, -2` se il componente non è creato |
of_clear_axis_sections ( string as_axis ) | Rimuove tutte le fasce e tutte le soglie di un asse. Restituisce 0 una volta svuotato, -5 se l'asse non è uno degli AXIS_*, -2 se il componente non è creato | |
of_reset ( ) | Svuota il grafico — handle delle serie e degli assi compresi — e riporta tutte le proprietà al loro valore d'origine. Restituisce 0 una volta fatto, -2 se il componente non è creato |
Senza chiave (modalità demo), il grafico disegna solo le sue prime 3 serie, legenda compresa. Le altre restano nel modello —
of_count,of_get_series_valuese i loro handle le vedono — e la chiave impostata le mostra senza che Lei debba rinviare nulla.
Eventi #
| Evento | Scatta quando |
|---|---|
ue_point_clicked (string as_key, long al_index, double ad_value) | Una barra, un punto, una cella o una quotazione è stata cliccata — o confermata con Invio: la chiave della serie, la posizione del punto nella serie, a partire da 1, e il suo valore — quello del punto qualunque sia la forma della serie: la y di una nuvola, il peso di una cella di calore, la chiusura di una quotazione. Alla tastiera Sinistra/Destra percorrono le categorie e Su/Giù scelgono la serie che il pannello sottolinea; una serie di punti o una mappa di calore scelta si percorre punto per punto. Un buco non ha niente da cliccare |
ue_series_toggled (string as_key, boolean ab_visible) | L'utente ha nascosto o rimostrato una serie con un clic nella legenda. Ciò che il grafico mostra non è allora più ciò che l'applicazione ha inviato. Impostare ib_visible è un valore, come spuntare una casella: questo evento riporta il gesto dell'utente |
L'animazione è un ingresso, non un calcolo: la geometria finale è scritta subito, e si riproduce solo l'arrivo. Un grafico mai mostrato — nato fuori schermo, in una scheda che nessuno apre — mostra dunque le barre giuste, in silenzio.
Proprietà di elemento #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_label | string | "" | Il nome della serie, così come la legenda lo mostra |
is_type | string | bar | bar · line · area · scatter · stepline (costanti TYPE_*). Cambia il disegno di questa sola serie — è ciò che fa un grafico combinato. Viene preso solo un tipo della stessa famiglia: una serie di valori fra bar, line, area, scatter e stepline, una serie finanziaria fra ohlc e candle; un altro è ignorato e is_type rilegge il tipo conservato |
il_color | long | -1 | Colore della serie (RGB()). -1 finché non ne è impostato nessuno: sceglie la tavolozza |
ib_visible | boolean | true | false nasconde una serie senza rimuoverla — la legenda conserva la via del ritorno. Come una casella di controllo, è un valore impostato: ue_series_toggled riporta il clic dell'utente nella legenda |
ib_secondary | boolean | false | Traccia la serie sul secondo asse. È così che un numero e un importo vivono sullo stesso grafico |
ib_data_labels | boolean | false | Scrive il valore di ogni punto accanto a esso. Spento per difetto: su cinquanta punti le etichette coprono il disegno che spiegano |
is_label_format | string | "" | Ciò che dice ogni etichetta e ogni riga del pannello: #y# il valore, #x# la categoria (la x di una serie di punti, la colonna di una cella di calore), #v# la riga di una cella di calore, #label# il nome della serie, #open# #high# #low# #close# le quotazioni; il resto si scrive così com'è — "$#y#K". Vuoto = il valore da solo. Un'etichetta scritta dentro una barra impilata prende il nero o il bianco che la sua barra regge |
id_smoothness | double | 1 | Solo linee e aree: quanto la linea è arrotondata, 0 = segmenti dritti, 1 = pienamente curva, come la disegna LiveCharts. Una linea a gradini lo ignora — dice che il livello ha TENUTO fino alla categoria successiva, una curva direbbe che è derivato. Una curva può passare oltre i suoi punti; è tagliata alla cornice del tracciato e non dipinge mai sulle etichette degli assi |
ib_fill | boolean | true | Linee e aree: la velatura sotto il tratto, fino all'asse, nella tinta della serie. È la rimozione l'atto deliberato — per una linea posata sopra altro (colonne, bande d'asse colorate) che la velatura nasconderebbe |
il_fill_color | long | -1 | Il colore di quella velatura. -1 = quello della linea stessa |
is_marker | string | "circle" | Linee, linee a gradini e nuvole di punti: la FORMA del marcatore su ogni punto (costanti MARKER_*: none, circle, square, triangle, diamond). Non è decorazione — due linee che si incrociano, stampate in grigio, si distinguono per il loro marcatore e per nient'altro |
ii_thickness | integer | 2 | Linee e aree: lo spessore del tratto, in pixel |
ii_point_count | integer | 0 | Quanti punti porta questa serie — valori o coppie (x, y) (sola lettura) |
il_cold_color | long | -1 | Solo mappe di calore: l'estremo FREDDO della scala, la lettura più leggera. -1 = la scala propria del componente, un solo blu, dal molto pallido al pieno |
il_mid_color | long | -1 | Il punto MEDIO. Tre punti e non due: interpolare da un estremo all'altro sbiadisce il centro della scala, dove si trovano la maggior parte delle letture. -1 = il blu medio del componente |
il_hot_color | long | -1 | L'estremo CALDO, la lettura più pesante. È quello che la legenda mostra. -1 = il blu pieno del componente |
il_up_color | long | -1 | Solo serie finanziarie: il colore di un punto che chiude sopra la sua apertura. -1 = il verde del componente |
il_down_color | long | -1 | E quello di un punto che chiude al di sotto. Due colori perché il verso è ciò che si legge su un tale grafico — uno solo lo nasconderebbe. -1 = il rosso del componente |
Proprietà d'asse #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_title | string | "" | Titolo scritto lungo l'asse. Vuoto = nessun titolo, e nessuno spazio riservato |
id_min | double | NULL | Limite inferiore imposto. Vince sui dati e non è arrotondato: chi scrive 0 vuole 0. NULL (SetNull) non impone nulla: l'asse segue di nuovo i suoi dati, e un limite libero si rilegge NULL (IsNull), mai 0. Libero, un asse dei valori include lo zero solo se una barra o un'area vi poggia: quotazioni e linee si leggono sul loro intervallo |
id_max | double | NULL | Limite superiore imposto, stessa regola. Ciò che lo supera è tagliato al bordo del tracciato |
id_step | double | 0 | Distanza fra due linee di griglia, in valori. 0 = un passo tondo letto dall'intervallo |
ii_label_rotation | integer | 0 | Rotazione delle etichette di questo asse, in gradi (da -90 a 90) — nomi di categoria o graduazioni dei valori. Dodici nomi di mesi stanno sotto un grafico solo inclinati; quando ancora non ci stanno, il grafico ne scrive uno su N, sempre il primo e l'ultimo |
ib_separator | boolean | true | Le sue linee di griglia. Un asse di categorie ne ha raramente bisogno, uno di valori quasi sempre |
ii_section_count | integer | 0 | Quante fasce e soglie porta questo asse (sola lettura) |
ib_logarithmic | boolean | false | Solo assi dei valori: una scala logaritmica, graduata per decadi (1, 10, 100…), ogni decade della stessa altezza — per cifre che coprono più ordini di grandezza. Lo zero e i valori negativi non vi trovano posto e non sono disegnati |
Esempi #
Regolare l'animazione secondo lo schermo #
// 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
Aprire le righe dietro un punto #
// 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)
Un cruscotto che vive #
// 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)
Un grafico in diretta che scorre #
// 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)
Una misura mancante, e il grafico come immagine #
// 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")
Una fascia e un obiettivo sull'asse dei valori #
// 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)"
Buone pratiche #
- Ponete le categorie prima delle serie. Il loro numero dice cosa una serie deve contenere; il contrario non può funzionare.
- Un secondo asse si giustifica, non si subisce. Due scale su uno stesso disegno ingannano l'occhio: tiratelo fuori solo quando le unità sono davvero diverse.
- Spegnete l'animazione su un cruscotto che si aggiorna. Un arrivo che ricomincia ogni cinque secondi non finisce mai, e stanca invece di aiutare.
- Le barre partono da zero, e il componente vi si attiene: lo zero entra nell'asse appena una barra o un'area vi poggia. Un grafico a barre troncato esagera ogni scarto. Linee, nuvole e quotazioni si leggono sul loro intervallo.
- Il grafico conserva il senso matematico in un'applicazione da destra a sinistra: categorie da sinistra a destra, asse dei valori a sinistra. Solo la legenda
START/ENDsegue il senso di lettura. - Impilate per leggere un totale, affiancate per confrontare. Non sono due stili, sono due domande diverse.
ue_point_clickeddà il rango: servitevene per aprire l'elenco esatto dietro quel punto, non la maschera di ricerca.
Ereditato dalla base comune #
Questi membri esistono su tutti i componenti visivi — non sono propri di questo. Sono descritti una sola volta, nei capitoli trasversali; questa tabella dice solo dove leggerli.
| Membri | Ruolo | Descritto in |
|---|---|---|
of_count · of_keys_at · of_has | Percorrere ciò che il componente contiene | 3.2 Gli item |
of_reset | Riportare il componente a zero | 3.6 Riportare un componente a zero: of_reset() |
of_register_shortcut · of_clear_shortcuts | Scorciatoie da tastiera del componente | 3.5 Le scorciatoie da tastiera |
of_is_created · of_is_ready · of_get_last_error | Se è nato, se è pronto, cosa è fallito | 3.7 Diagnostica |
of_save_as_png · of_save_as_jpg | Esportare il rendering in immagine | 3.8 Esportare il rendering come immagine |
of_set_redraw | Raggruppare le modifiche in un solo ridisegno | 3.10 Buone pratiche |
of_preload_icons | Icone mostrate senza ritardo | Visualizzazione istantanea: of_icon |
of_set_translation | Tradurre una dicitura del componente | 5.2 Adattare un'etichetta: of_set_translation |
of_focus_webview | Dare il focus al componente | 6.4 Tastiera e focus |
of_print · of_print_to_pdf | Stampare, o scrivere un PDF | 6.9 Stampare |
of_set_property · of_get_property · of_component_name | Pilotare una proprietà per nome | 3.1 Il motore delle proprietà |
Due aiuti non sono ereditati: of_icon e of_escape_markup vivono su n_pbt_utils. Ne dichiari uno — n_pbt_utils lnv_utils, niente da creare — e li chiami su di esso.