chartcartesian — u_pbt_chartcartesian #
← Referencia de componentes · Índice de la guía
Gráfico cartesiano: columnas, barras, líneas, áreas y nubes de puntos, sobre un eje de categorías y uno o dos ejes de valores. El tipo se fija por serie.
▶ Verlo en vivo — Aplicación de demostración, mosaico Cartesian chart : la vista previa, el código que lo produce y esta página, lado a lado.
En resumen #
| Userobject | u_pbt_chartcartesian |
| Clase de elementos | n_pbt_chartcartesian_series (of_item(key)) · n_pbt_chartcartesian_axis (of_axis(axis)) |
| Sirve para | Comparar valores a lo largo de un eje — meses, productos, regiones |
| Principio | Usted pone las categorías y luego las series; las escalas, la rejilla y la animación son cosa nuestra |
Inicio 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)
El tipo pertenece a la SERIE, no al componente #
Es la decisión de la que se sigue todo lo demás. Un componente por tipo — uno para barras, otro para líneas — nunca puede producir un combinado: barras con una línea de objetivo encima, sobre un segundo eje. Y esa es la forma más pedida en un cuadro de mando.
Aquí hay un solo componente, y cada serie lleva su is_type (TYPE_BAR, TYPE_LINE, TYPE_AREA, TYPE_SCATTER). Cambiar el tipo de una serie no toca las demás.
ib_secondary coloca una serie en el segundo eje de valores. Es lo que permite que un número de pedidos y una facturación convivan: sin él, uno de los dos es una línea plana al ras del eje.
of_set_categoriesva antes que las series: su número fija cuántos valores debe llevar cada serie.
// 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
Propiedades #
| Propiedad | Tipo | Predeterminado | Función |
|---|---|---|---|
is_title | string | "" | Título del gráfico, mostrado encima |
ib_show_legend | boolean | true | Muestra la leyenda. Hacer clic en una entrada oculta su serie — la forma más barata de comparar dos series de cinco |
is_legend_location | string | bottom | Dónde va la leyenda (constantes LEGEND_*): encima o debajo del trazado, o al lado — START/END la colocan en columna a un lado, y el trazado le cede el sitio. START/END son lógicas: siguen el sentido de lectura. Una posición desconocida vale abajo, y se relee así |
ib_show_grid | boolean | true | Las líneas de fondo, en cada valor redondo. Sin ellas solo la forma sigue siendo legible, nunca un valor |
ib_value_tooltip | boolean | true | El panel de valores: cuando el ratón pasa sobre una categoría, todas las series y su valor ahí, de una vez, y una retícula marca la columna. No es is_tooltip (heredado), que es el tooltip del componente entero — éste sigue al puntero y dice de qué está hecho el gráfico. Cada serie escribe su línea con su propio is_label_format; un valor ausente no tiene línea |
is_orientation | string | vertical | Columnas o barras (constantes ORIENTATION_*). Gira todo el sistema de referencia, líneas y áreas incluidas |
ib_stacked | boolean | false | Apila las series de barras en vez de ponerlas una al lado de otra. Líneas y áreas nunca se apilan: dicen un nivel |
is_stack_mode | string | value | Suma o parte (constantes STACK_*). En percentage cada pila se lleva a 100: el eje lee entonces partes, no totales — hasta -100 cuando hay partes negativas. No significa nada fuera del apilado |
ib_enabled | boolean | true | Atenuado: el componente sigue mostrando lo que muestra — un gráfico sin datos no es lo mismo que un gráfico que la aplicación ha apagado — pero deja de responder: ni clic, ni tecla, ni entrada de leyenda, y sale del orden de tabulación. true por defecto |
ib_animated | boolean | true | El gráfico llega animado: las formas crecen, las cintas se funden. Si la llegada se repite en cada refresco de un cuadro de mando, más vale apagarla — una llegada que vuelve a empezar cada cinco segundos no termina nunca. Un puesto configurado para reducir el movimiento no anima nunca |
ii_anim_duration | integer | 450 | Duración de esa llegada, en milisegundos (0 a 5000) |
is_anim_easing | string | ease-out | Curva de la aparición (constantes EASING_*): linear, ease-out, back-out que se pasa y vuelve, bounce-out que rebota, elastic-out que chasquea. Es la que da su carácter a la animación |
ii_anim_delay | integer | 0 | Desfase entre dos series a la llegada, en milisegundos (0 a 1000). Entran entonces una tras otra en vez de surgir juntas, lo que da al gráfico su sentido de lectura. 0 = todas a la vez |
is_theme_style | string | "" | Estilo visual del componente (constantes THEME_STYLE_*); vacío = el de la aplicación, seguido en cada cambio |
is_theme_mode | string | "" | Variante clara u oscura (constantes THEME_MODE_*); vacío = la de la aplicación, seguida en cada cambio |
il_theme_accent | long | -1 | Color de acento de este componente (-1 = acento del tema) |
is_tooltip | string | "" | Información sobre herramientas simple al pasar por encima del componente |
is_super_tooltip_title | string | "" | Título de la información enriquecida (tiene prioridad sobre is_tooltip) |
is_super_tooltip_text | string | "" | Texto de la información enriquecida (se acepta marcado enriquecido) |
is_super_tooltip_image | string | "" | Imagen de la información enriquecida |
Métodos #
| Método | Función | |
|---|---|---|
of_set_categories ( string as_labels[] ) | Las etiquetas del eje de categorías. Llámelo antes que las series. Devuelve 0 una vez aplicado, -2 si el componente no está creado | |
of_set_value_labels ( string as_labels[] ) | Etiquetas en el eje de valores. Vacío — el caso normal — ese eje lleva números. Relleno, lleva bandas como el eje de categorías: el marco de dos categorías en el que se dibuja un mapa de calor. Devuelve 0 una vez aplicado, -2 si el componente no está creado | |
of_get_value_labels ( ref string as_labels[] ) | Rellena as_labels[] con lo que el eje de valores lleva ahora y devuelve el número. Cero = lleva números | |
of_add_heat_series ( string as_key, string as_label, long al_x[], long al_y[], double ad_weight[] ) | Un mapa de calor: una celda por par (categoría, etiqueta de valor), coloreada por su peso. al_x es el rango de la categoría y al_y el de la etiqueta, ambos desde 1 — los rangos de un arreglo PowerScript, que un doble bucle escribe sin cálculo. Ponga antes las dos listas. Devuelve 0 una vez añadida, -5 si la clave está vacía, contiene / o ` | , o ya está tomada, -2` si el componente no está creado |
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: el rango de mínimo a máximo, una marca a la izquierda para la apertura y otra a la derecha para el cierre. Cuatro números por punto, y el eje se lee sobre el máximo y el mínimo — los otros dos están dentro por construcción. Los cuatro arreglos se truncan al más corto. Devuelve 0 una vez añadida, -5 si la clave está vacía, contiene / o ` | , o ya está tomada, -2` si el componente no está creado |
of_add_candle_series ( string as_key, string as_label, double ad_open[], double ad_high[], double ad_low[], double ad_close[] ) | Los mismos cuatro números, dibujados como velas: una mecha de mínimo a máximo y un cuerpo relleno entre apertura y cierre. Un doji — apertura igual al cierre — conserva un píxel de cuerpo, para seguir siendo una línea que el ojo encuentra. Devuelve 0 una vez añadida, -5 si la clave está vacía, contiene / o ` | , o ya está tomada, -2` si el componente no está creado |
of_set_series_ohlc ( string as_key, double ad_open[], double ad_high[], double ad_low[], double ad_close[] ) | Nuevas cotizaciones para una serie financiera ya trazada. Lo que of_set_series_values es a una serie de valores. Devuelve 0 una vez aplicado, -5 si ninguna serie lleva esta clave o si no es financiera, -2 si el componente no está creado | |
of_get_series_ohlc ( string as_key, ref double ad_open[], ref double ad_high[], ref double ad_low[], ref double ad_close[] ) | Rellena los cuatro arreglos con lo que la serie lleva ahora y devuelve el número de puntos. Una serie no financiera devuelve 0 | |
of_add_series ( string as_key, string as_label, string as_type, double ad_values[] { , long al_color } ) | Añade una serie con su tipo — TYPE_BAR, TYPE_LINE, TYPE_AREA, TYPE_SCATTER o TYPE_STEPLINE; la sobrecarga toma también su color (RGB()), si no la paleta elige. Un valor NULL (SetNull) es un hueco: ahí no se dibuja, ni se etiqueta ni se hace clic en nada, y una línea se corta. Una clave ya tomada se rechaza, nunca se reemplaza: of_set_series_values y el handle of_item cambian una serie que existe. Devuelve 0 una vez añadida, -5 si el tipo no es uno de esos cinco (un mapa de calor y las series financieras tienen su método), o si la clave está vacía, contiene / o ` | , o ya está tomada, -2` si el componente no está creado |
of_set_series_values ( string as_key, double ad_values[] ) | Nuevos valores para una serie ya trazada, lo demás intacto. Es la llamada de un panel vivo: la serie conserva su identidad, así que las formas se deslizan en vez de saltar. Un valor NULL es un hueco. Devuelve 0 una vez aplicado, -5 si ninguna serie lleva esta clave o si lleva puntos o cotizaciones (of_set_series_points, of_set_series_ohlc los reemplazan), -2 si el componente no está creado | |
of_append_values ( string as_key, double ad_values[], long al_max_points ) | Un gráfico en directo: añade nuevos valores al final de una serie y quita los más antiguos en cuanto lleva más de al_max_points (0 = sin límite). Solo viajan los valores nuevos — la serie no se reenvía en cada tic. Combínelo con of_append_categories. Devuelve 0 una vez aplicado, -5 si ninguna serie lleva esta clave o si lleva puntos o cotizaciones, -2 si el componente no está creado | |
of_append_categories ( string as_labels[], long al_max_count ) | Nuevas categorías al final del eje, las más antiguas quitadas más allá de al_max_count (0 = sin límite): las etiquetas de un gráfico en directo se deslizan con sus valores. Devuelve 0 una vez aplicado, -2 si el componente no está creado | |
of_add_point_series ( string as_key, string as_label, double ad_x[], double ad_y[] { , double ad_weight[] } ) | Una serie situada por valor en los dos ejes: x dice dónde a lo largo del eje de categorías, y a qué altura. Ese eje deja entonces de ser un eje de categorías — pasa a ser un segundo eje de valores, con sus propias graduaciones. Una sobrecarga toma un peso por punto, que dimensiona la burbuja. Devuelve 0 una vez añadida, -5 si la clave está vacía, contiene / o ` | , o ya está tomada, -2` si el componente no está creado |
of_set_series_points ( string as_key, double ad_x[], double ad_y[], double ad_weight[] ) | Nuevos puntos para una serie que ya lleva algunos. Lo que of_set_series_values es a una serie de valores. Devuelve 0 una vez aplicado, -5 si ninguna serie lleva esta clave o si lleva valores o cotizaciones, -2 si el componente no está creado | |
of_get_series_points ( string as_key, ref double ad_x[], ref double ad_y[], ref double ad_weight[] ) | Rellena los tres arreglos con lo que la serie lleva ahora y devuelve el número de puntos. Una serie de valores no devuelve nada en ad_x: no tiene abscisa propia | |
of_get_series_values ( string as_key, ref double ad_values[] ) | Rellena ad_values[] con lo que la serie lleva ahora y devuelve el número. Lectura viva : pregunta al gráfico, no al último envío | |
of_remove_series ( string as_key ) | Quita una serie; las demás conservan su color y su visibilidad. Su handle (of_item) se destruye con ella: un of_item posterior sobre la misma clave crea uno nuevo. Devuelve 0 una vez quitada, -5 si ninguna serie lleva esta clave, -2 si el componente no está creado | |
of_clear ( ) | Vacía el gráfico — series y categorías; los handles de serie se van con ellas. Los ejes conservan sus ajustes y sus secciones. Devuelve 0 una vez vaciado, -2 si el componente no está creado | |
of_set_value_format ( integer ai_decimals, string as_prefix, string as_suffix, boolean ab_thousands ) | Formato de los números de todo el gráfico — ejes, etiquetas y panel de valores: decimales, prefijo, sufijo, separador de miles. Los separadores decimal y de miles son los del idioma de visualización. También borra el formato propio de cada eje. Devuelve 0 una vez aplicado, -2 si el componente no está creado | |
of_set_value_format ( string as_axis, integer ai_decimals, string as_prefix, string as_suffix, boolean ab_thousands ) | El formato de un eje (AXIS_VALUE, AXIS_VALUE2, o AXIS_CATEGORY cuando lleva números): sus graduaciones, y las etiquetas y el panel de las series trazadas sobre él — un importe de un lado, un número de pedidos del otro. Devuelve 0 una vez aplicado, -5 si el eje no es uno de los AXIS_*, -2 si el componente no está creado | |
of_clear_value_format ( ) | Vuelve al formato por defecto. Devuelve 0 una vez aplicado, -2 si el componente no está creado | |
of_item ( string as_key ) | Devuelve el asa de una serie, para modificarla después | |
of_axis ( string as_axis ) | Devuelve el asa de un eje (AXIS_CATEGORY, AXIS_VALUE, AXIS_VALUE2), para ajustarlo después. Cualquier otro papel no devuelve ninguna asa (IsValid() es falso) | |
of_add_axis_section ( string as_axis, string as_key, double ad_from, double ad_to, long al_color ) | Una banda a través del trazado, detrás de los datos: « por debajo de 200 es malo ». Dibujada bajo las formas, nunca compite con ellas. En el eje de categorías, ad_from y ad_to son posiciones contadas a partir de 1 (de 2 a 3 cubre la segunda y la tercera categoría). Devuelve 0 una vez añadida, -5 si el eje no es uno de los AXIS_* o si la clave está vacía, contiene / o ` | , o ya está tomada en ese eje, -2` si el componente no está creado |
of_add_axis_threshold ( string as_axis, string as_key, double ad_at, long al_color, integer ai_thickness ) | Una línea a través del trazado en un valor — un objetivo, un límite. El mismo registro que las bandas, pero dibujada para verse. Devuelve 0 una vez añadida, -5 si el eje no es uno de los AXIS_* o si la clave está vacía, contiene / o ` | , o ya está tomada en ese eje, -2` si el componente no está creado |
of_clear_axis_sections ( string as_axis ) | Retira todas las bandas y todos los umbrales de un eje. Devuelve 0 una vez vaciado, -5 si el eje no es uno de los AXIS_*, -2 si el componente no está creado | |
of_reset ( ) | Vacía el gráfico — handles de serie y de eje incluidos — y devuelve todas las propiedades a su valor de origen. Devuelve 0 una vez hecho, -2 si el componente no está creado |
Sin clave (modo demo), el gráfico solo dibuja sus 3 primeras series, leyenda incluida. Las demás se quedan en el modelo —
of_count,of_get_series_valuesy sus handles las ven — y la clave puesta las muestra sin que tenga que volver a enviar nada.
Eventos #
| Evento | Se dispara cuando |
|---|---|
ue_point_clicked (string as_key, long al_index, double ad_value) | Se ha hecho clic en una barra, un punto, una celda o una cotización — o se ha confirmado con Intro: la clave de la serie, la posición del punto en la serie, a partir de 1, y su valor — el del punto sea cual sea la forma de la serie: la y de una nube, el peso de una celda de calor, el cierre de una cotización. Con el teclado, Izquierda/Derecha recorren las categorías y Arriba/Abajo eligen la serie que el panel subraya; una serie de puntos o un mapa de calor elegido se recorre punto por punto. Un hueco no tiene nada que pulsar |
ue_series_toggled (string as_key, boolean ab_visible) | El usuario ha ocultado o vuelto a mostrar una serie con un clic en la leyenda. Lo que el gráfico muestra ya no es entonces lo que la aplicación envió. Poner ib_visible es un valor, como marcar una casilla: este evento informa del gesto del usuario |
La animación es una entrada, no un cálculo: la geometría final se escribe de inmediato y solo se reproduce la llegada. Un gráfico nunca mostrado — nacido fuera de pantalla, en una pestaña que nadie abre — enseña por tanto las barras correctas, en silencio.
Propiedades de elemento #
| Propiedad | Tipo | Predeterminado | Función |
|---|---|---|---|
is_label | string | "" | El nombre de la serie, tal como lo muestra la leyenda |
is_type | string | bar | bar · line · area · scatter · stepline (constantes TYPE_*). Cambia el dibujo de esta serie sola — es lo que hace un gráfico combinado. Solo se acepta un tipo de la misma familia: una serie de valores entre bar, line, area, scatter y stepline, una serie financiera entre ohlc y candle; cualquier otro se ignora e is_type relee el tipo conservado |
il_color | long | -1 | Color de la serie (RGB()). -1 mientras no se pone ninguno: la paleta elige |
ib_visible | boolean | true | false oculta una serie sin quitarla — la leyenda guarda el camino de vuelta. Como una casilla de verificación, es un valor que se pone: ue_series_toggled informa del clic del usuario en la leyenda |
ib_secondary | boolean | false | Traza la serie en el segundo eje. Así conviven un número y un importe en el mismo gráfico |
ib_data_labels | boolean | false | Escribe el valor de cada punto a su lado. Apagado por defecto: con cincuenta puntos, las etiquetas tapan el dibujo que explican |
is_label_format | string | "" | Lo que dice cada etiqueta y cada línea del panel: #y# el valor, #x# la categoría (la x de una serie de puntos, la columna de una celda de calor), #v# la fila de una celda de calor, #label# el nombre de la serie, #open# #high# #low# #close# las cotizaciones; el resto se escribe tal cual — "$#y#K". Vacío = el valor solo. Una etiqueta escrita dentro de una barra apilada toma el negro o el blanco que su barra soporta |
id_smoothness | double | 1 | Solo líneas y áreas: cuán redondeada se dibuja la línea, 0 = segmentos rectos, 1 = plenamente curva, como la dibuja LiveCharts. Una línea escalonada lo ignora — dice que el nivel se MANTUVO hasta la categoría siguiente, una curva diría que derivó. Una curva puede pasar más allá de sus puntos; se recorta al marco del trazado y nunca pinta sobre las etiquetas de los ejes |
ib_fill | boolean | true | Líneas y áreas: el lavado bajo el trazo, hasta el eje, en el tono de la serie. Es la retirada la que es el acto deliberado — para una línea puesta sobre otra cosa (columnas, bandas de eje coloreadas) que el lavado ocultaría |
il_fill_color | long | -1 | El color de ese lavado. -1 = el de la línea misma |
is_marker | string | "circle" | Líneas, escalones y nubes de puntos: la FORMA del marcador en cada punto (constantes MARKER_*: none, circle, square, triangle, diamond). No es decoración — dos líneas que se cruzan, impresas en gris, se distinguen por su marcador y por nada más |
ii_thickness | integer | 2 | Líneas y áreas: el grosor del trazo, en píxeles |
ii_point_count | integer | 0 | Cuántos puntos lleva esta serie — valores o pares (x, y) (sólo lectura) |
il_cold_color | long | -1 | Solo mapas de calor: el extremo FRÍO de la escala, la lectura más ligera. -1 = la escala propia del componente, un solo azul, del muy pálido al intenso |
il_mid_color | long | -1 | El punto MEDIO. Tres puntos y no dos: interpolar de un extremo a otro desvaída el centro de la escala, donde se sitúan la mayoría de las lecturas. -1 = el azul medio del componente |
il_hot_color | long | -1 | El extremo CALIENTE, la lectura más pesada. Es el que muestra la leyenda. -1 = el azul intenso del componente |
il_up_color | long | -1 | Solo series financieras: el color de un punto que cierra por encima de su apertura. -1 = el verde del componente |
il_down_color | long | -1 | Y el de un punto que cierra por debajo. Dos colores porque el sentido es lo que se lee en un gráfico así — uno solo lo ocultaría. -1 = el rojo del componente |
Propiedades de eje #
| Propiedad | Tipo | Predeterminado | Función |
|---|---|---|---|
is_title | string | "" | Título escrito a lo largo del eje. Vacío = sin título, y sin sitio reservado para uno |
id_min | double | NULL | Límite inferior impuesto. Gana a los datos y no se redondea: quien escribe 0 quiere 0. NULL (SetNull) no impone nada: el eje vuelve a seguir sus datos, y un límite libre se relee NULL (IsNull), nunca 0. Libre, un eje de valores solo incluye el cero si una barra o un área se apoya en él: cotizaciones y líneas se leen en su propio rango |
id_max | double | NULL | Límite superior impuesto, misma regla. Lo que lo supera se corta en el borde del trazado |
id_step | double | 0 | Distancia entre dos líneas de rejilla, en valores. 0 = un paso redondo leído del rango |
ii_label_rotation | integer | 0 | Rotación de las etiquetas de este eje, en grados (-90 a 90) — nombres de categoría o graduaciones de valores. Doce nombres de meses solo caben bajo un gráfico inclinados; cuando aún no caben, el gráfico escribe uno de cada N, siempre el primero y el último |
ib_separator | boolean | true | Sus líneas de rejilla. Un eje de categorías rara vez las necesita, uno de valores casi siempre |
ii_section_count | integer | 0 | Cuántas bandas y umbrales lleva este eje (sólo lectura) |
ib_logarithmic | boolean | false | Solo ejes de valores: una escala logarítmica, graduada por décadas (1, 10, 100…), cada década de la misma altura — para cifras que abarcan varios órdenes de magnitud. El cero y los valores negativos no tienen sitio en ella y no se dibujan |
Ejemplos #
Ajustar la animación según la pantalla #
// 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 las filas detrás de 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 cuadro de mando 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)
Un gráfico en directo que se 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)
Una medida que falta, y el gráfico como imagen #
// 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 banda y un objetivo en el eje de 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)"
Buenas prácticas #
- Ponga las categorías antes que las series. Su número dice lo que debe contener una serie; al revés no puede funcionar.
- Un segundo eje se justifica, no se padece. Dos escalas en un mismo dibujo engañan al ojo: sáquelo solo cuando las unidades sean realmente distintas.
- Corte la animación en un cuadro de mando que se refresca. Una llegada que vuelve a empezar cada cinco segundos no termina nunca, y cansa en vez de ayudar.
- Las barras parten de cero, y el componente se atiene a ello: el cero entra en el eje en cuanto una barra o un área se apoya en él. Un gráfico de barras truncado exagera cada diferencia. Líneas, nubes y cotizaciones se leen en su propio rango.
- El gráfico conserva el sentido matemático en una aplicación de derecha a izquierda: categorías de izquierda a derecha, eje de valores a la izquierda. Solo la leyenda
START/ENDsigue el sentido de lectura. - Apile para leer un total, yuxtaponga para comparar. No son dos estilos, son dos preguntas distintas.
ue_point_clickedda el rango: úselo para abrir la lista exacta detrás de ese punto, no la pantalla de búsqueda.
Heredado de la base común #
Estos miembros existen en todos los componentes visuales — no son propios de este. Se detallan una sola vez, en los capítulos transversales; esta tabla solo dice dónde leerlos.
| Miembros | Función | Detallado en |
|---|---|---|
of_count · of_keys_at · of_has | Recorrer lo que el componente contiene | 3.2 Los items |
of_reset | Poner el componente a cero | 3.6 Poner un componente a cero: of_reset() |
of_register_shortcut · of_clear_shortcuts | Atajos de teclado del componente | 3.5 Los atajos de teclado |
of_is_created · of_is_ready · of_get_last_error | Si ha nacido, si está listo, qué ha fallado | 3.7 Diagnóstico |
of_save_as_png · of_save_as_jpg | Exportar el render como imagen | 3.8 Exportar la representación como imagen |
of_set_redraw | Agrupar los cambios en un solo repintado | 3.10 Buenas prácticas |
of_preload_icons | Iconos mostrados sin retardo | Visualización instantánea: of_icon |
of_set_translation | Traducir una etiqueta del componente | 5.2 Adaptar una etiqueta: of_set_translation |
of_focus_webview | Dar el foco al componente | 6.4 Teclado y foco |
of_print · of_print_to_pdf | Imprimir, o escribir un PDF | 6.9 Imprimir |
of_set_property · of_get_property · of_component_name | Controlar una propiedad por su nombre | 3.1 El motor de propiedades |
Dos ayudas no se heredan: of_icon y of_escape_markup viven en n_pbt_utils. Declare uno — n_pbt_utils lnv_utils, nada que crear — y llámelas sobre él.