Gráfico
Última actualización
Última actualización
El gráfico es un objeto nativo que permite generar gráficos a partir de listas de registros de las tablas. Al ser una vista de datos, podemos realizar las mismas utilidades que en el resto de objetos de este tipo (rejillas, informes, ...) e interactuar con ellas en tiempo de ejecución, filtrando elementos, añadiendo elementos a la lista, ...
Título.
Leyenda.
Categoría.
Valor.
Eje X.
Etiqueta categoría.
Eje Y.
Una de los elementos fundamentales de esta vista de datos es que se carga de forma asíncrona, permitiendo construir gráficos con millones de registros.
Para optimizar la velocidad en la creación del gráfico, aconsejamos que en Categoría y en Valor se asignen campos de la tabla o campos maestros. No se recomienda el uso de fórmulas, ya que penalizará la creación de dicho gráfico.
Si además tenemos los datos en la caché, la velocidad será altísima.
El usuario, en tiempo de ejecución, podrá multipartir un gráfico de ventas por comercial, en distintos gráficos de ventas por comercial, por provincia, etc o por ejemplo, filtrar ese mismo gráfico de ventas por comercial por el mes en curso.
Al ser una lista se puede interactuar con la lista del gráfico para en tiempo de ejecución filtrar elementos, añadir elementos a la lista, etc.
Un gráficos es posible incrustarlo en formularios, visualizarlo a pantalla completa, en un alternador, ...
Es posible generar un gráfico en stock y utilizarlo desde un vista de datos.
También podemos insertar un gráfico en un informe personalizable. Para insertar un gráfico existente en un informe personalizado, podemos elegir la opción de que sea alimentado con un proceso o bien sin proceso utilizando en ese caso los registros de la lista mostrada.
Para generar un gráfico es necesario crear un subobjeto de tipo serie.
Etiqueta alfanumérica que identifica al objeto. Este identificador será el que se usa para referenciarlo en los inspectores y en las propiedades de otros objetos.
Etiqueta alfanumérica que servirá como descriptor del gráfico. Es el texto que se presentará al usuario final de la aplicación para referenciarlo.
Podemos definir una etiqueta por cada idioma presente en el proyecto.
Podemos definir el estilo privado, que limita el acceso del usuario final al objeto desde puntos donde no se haya programado el acceso al mismo.
Esta propiedad nos permite documentar el uso del objeto.
Tabla de un proyecto de datos heredado que se usará para generar el gráfico.
Permite seleccionar un icono para mostrar en el título de la pestaña donde se muestre el icono. Si se deja vacío, se usará un icono por defecto de la plataforma.
Permite definir el título del gráfico por medio de una fórmula que podremos escribir usando el asistente para edición de fórmulas. Para ello debemos pulsar el botón que aparece al editar esta propiedad y que nos abre el asistente.
Esta propiedad solamente estará disponible si hemos seleccionado el valor ninguno en la propiedad tema. Nos permitirá configurar la fuente del título del gráfico.
Esta propiedad solamente estará disponible si hemos seleccionado el valor ninguno en la propiedad tema. Nos permitirá configurar el color de la fuente del título del gráfico.
Permite configurar la visibilidad de la leyenda que es la información de las series seleccionadas en el gráfico.
Los valores posibles son:
La leyenda no se mostrará.
La leyenda se mostrará.
En ejecución permitirá al usuario pueda ocultar o visualizar una serie del gráfico haciendo clic en su valor en la serie:
Implica que al pulsar sobre una leyenda en concreto, se desactiva del gráfico la serie correspondiente, mostrando sólo el resto de los datos hasta que volvamos a pulsar sobre ella. Podemos pulsar tantas leyendas como datos no queramos ver en el gráfico.
En gráficos de tarta se pone a 0 el valor y los demás ganan ese espacio, así se podrán ver mejor las porciones más pequeñas.
En el caso de agrupaciones, al pulsar sobre una leyenda de las agrupaciones, se desactiva del gráfico la serie correspondiente, es decir, también el resto de agrupaciones.
Si no tenemos definidos valores fijos (máximo/mínimo) en el eje y (eje de valores), según ocultemos/mostremos una serie, el sistema podrá cambiar los valores máximo y mínimo del eje en función de las series que queden visibles.
Permite configurar la ubicación de la leyenda en el caso de que sea visible. Los valores posibles son:
Arriba.
Abajo.
Izquierda.
Derecha.
En esta propiedad seleccionaremos si queremos que al crearse el gráfico, exista una animación durante el proceso de generación de cada serie o no se genere animación y muestre el resultado de forma inmediata.
Los valores posibles son:
Ninguna (Valor por defecto).
Series.
En esta propiedad asignaremos en milisegundos la duración de la animación. Sólo estará visible si hemos seleccionado animación por series y su valor por defecto será de 1000 milisegundos.
En esta propiedad seleccionaremos el tema del gráfico y que aplicará una serie de propiedades establecidas como son el color del fondo, color del título, color de la leyenda, color de las series, ...
Si no aplicamos tema, nos generará un tema por defecto sin necesidad de modificar las propiedades antes descritas.
Los valores posibles son:
Ninguno. Si seleccionamos este tema, aparecerán una serie de propiedades en el gráfico para que podamos configurarlo nosotros mismos.
Claro (valor por defecto).
Azul cerúleo.
Oscuro.
Marrón arena.
Azul NCS.
Alto contraste.
Azul hielo.
Verde.
En esta propiedad asignaremos el máximo de categorías a mostrar. Por ejemplo, en un gráfico Top 10 de ventas por cliente, el contenido para esta propiedad será de 10, para que nos muestre únicamente los 10 primeros registros. Por defecto su contenido es 0 por lo que se mostrarían todos los registros.
En esta propiedad seleccionaremos el criterio por el que se ordenará el gráfico. Los valores posibles son:
Ninguno (Valor por defecto).
Categoría.
Valores.
En esta propiedad seleccionaremos el modo de ordenación que afectará al anterior ítem (Ordenar por). Los valores posibles son:
Ascendente (Valor por defecto).
Descendente.
En esta propiedad indicaremos si queremos que a los valores numéricos del gráfico se les aplique el formato numérico local o no. Los valores posibles son:
Verdadero.
Falso.
Espacio de separación en píxeles, en el margen izquierdo, del gráfico.
Espacio de separación en píxeles, en el margen derecho, del gráfico.
Espacio de separación en píxeles, en el margen superior, del gráfico.
Espacio de separación en píxeles, en el margen inferior, del gráfico.
Toolbar asociada al objeto gráfico que se asociará a su visualización.
Permite asignar un menú de contexto al control. Los valores posibles son:
Ninguno: en ejecución el control carecerá de menú de contexto.
Por defecto: en ejecución se usará el menú de contexto por defecto del control. No todos los controles por defecto tienen menú de contexto.
Personalizado: permite indicar que el control usará un objeto menú declarado en el proyecto de aplicación o en cualquier proyecto heredado.
Los ejes de categorías y valores son opcionales y únicamente debemos generarlos si queremos personalizarlos para modificar cualquiera de sus propiedades.
Este subobjeto es la parte más importante del gráfico e imprescindible, ya que indica cómo representará los datos de la serie. Los gráficos en Velneo permiten varias series y cada una con un formato distinto (líneas, áreas, barras, tartas, ... ) sin duda una potencia y versatilidad enorme para nuestras aplicaciones.
Configuraremos también la visibilidad de los valores, prefijos y sufijos, ... y lo más importante, las tres propiedades que generarán el gráfico y que son:
Campo o fórmula generador de cada serie y por el que multi-partirá los registros para acumular los valores. Por ejemplo, si queremos realizar un gráfico con las ventas realizadas a los clientes desde la tabla de Facturas de venta, la propiedad categoría será el campo ID del cliente (también podríamos seleccionar el nombre del cliente, su país, ...). Podemos utilizar el asistente de fórmulas para rellenar su contenido. Es obligatorio.
Debemos tener en cuenta de que, en el caso de que se repita el texto de la categoría, aunque la categoría definida sea distinta, si coincide el texto de la misma en dos o más registros, solamente se tendrá en cuenta el último registro de los coincidentes, obviando el resto. El programador deberá, por tanto, asegurarse en ese caso de incluir en el texto de categoría algo que diferencie realmente los elementos que se incluyan.
Campo o fórmula acumulador por cada serie. Por ejemplo, si queremos realizar un gráfico con las ventas realizadas a los clientes desde la tabla de Facturas de venta, la propiedad Valor podría ser el campo TOTAL_FRA (podemos asignar campos, fórmulas, ...).
Además de poder asignar campos y fórmulas, también podemos asignar un valor absoluto. Por ejemplo, para hacer un gráfico del número de clientes por país, en el campo Valor pondríamos un 1. Esto nos mostraría el número de clientes por cada uno de los países.
Podemos utilizar el asistente de fórmulas para rellenar su contenido. Es obligatorio.
Campo o fórmula que generará sub-series por cada serie. Por ejemplo, si queremos realizar un gráfico con las ventas realizadas a los clientes desde la tabla de Facturas de venta agrupándolos por años, la propiedad agrupamiento será el campo EJERCICIO. Podemos utilizar el asistente de fórmulas para rellenar su contenido. Es opcional.
Una vez completadas las propiedades Categoría, Valor y/o agrupamiento, podemos seguir configurando el resto de las propiedades del gráfico.
Debemos tener en cuenta de que, en el caso de que se repita el texto del agrupamiento, aunque el agrupamiento definido sea distinto, si coincide el texto del mismo en dos o más registros, solamente se tendrá en cuenta el último registro de los coincidentes, obviando el resto. El programador deberá, por tanto, asegurarse en ese caso de incluir en el texto de agrupamiento algo que diferencie realmente los elementos que se incluyan.
El resto de las propiedades de una serie son:
Etiqueta alfanumérica que identifica al objeto. Este identificador será el que se usa para referenciarlo en los inspectores y en las propiedades de otros objetos.
Etiqueta alfanumérica que servirá como descriptor del gráfico. Es el texto que se presentará al usuario final de la aplicación para referenciarlo.
Podemos definir una etiqueta por cada idioma presente en el proyecto.
Podemos definir el estilo privado, que limita el acceso del usuario final al objeto desde puntos donde no se haya programado el acceso al mismo.
Esta propiedad nos permite documentar el uso del sub-objeto.
Esta propiedad nos permite indicar el tipo de gráfico que generaremos con la serie. Los tipos de gráficos disponibles son:
Para una correcta visualización del gráfico, es aconsejable ordenar los valores previamente para que su representación sea continua y similar a la de la imagen.
Similar al gráfico de líneas, su representación se realiza generando áreas sólidas desde el inicio del primer valor al siguiente y así sucesivamente.
Este tipo de gráfico es el más utilizado para representar valores (en el ejemplo acumulamos importes de venta) agrupados por diferentes categorías (en el ejemplo las categorías se generan por cada ejercicio). Opcionalmente, podemos añadir agrupamientos para generar sub-series (en el ejemplo generamos un agrupamiento por cada comercial).
Idéntico al gráfico de barras verticales pero apilando las diferentes categorías o agrupamientos.
Idéntico al gráfico anterior pero en lugar de que los valores son absolutos (el total de las ventas), se calculan de forma automática los porcentajes de esos importes respecto a la suma total.
Idéntico al gráfico de barras verticales.
Idéntico al gráfico de barras apiladas verticales.
Idéntico al gráfico de barras porcentuales verticales.
Este tipo de gráfico es muy utilizado para representar estadísticas con un número de categorías finito o no muy alto (por ejemplo ventas por familia, por países, por comercial, ...) ya que su visualización global sería difícil (por ejemplo un gráfico de ventas de todos los clientes).
Este tipo de gráfico nos muestra los valores en coordenadas X e Y. Suele utilizarse para mostrar valores en un periodo de tiempo, etc.
Este tipo de gráfico es idéntico al gráfico de líneas pero mostrando la unión de valores de forma curva en lugar de líneas rectas.
En este parámetro podremos aplicar un filtro a la lista. El filtro será establecido en una fórmula.
En esta propiedad podremos personalizar el color con el que se pintará la serie, especificando su valor hexadecimal. Se trata de una fórmula, por lo que su código deberá especificarse entrecomillado. Ejemplo: "#DF0101"
Esta propiedad se calcula también en cada agrupamiento, con lo que podremos especificar un color en función del valor de cada agrupamiento, es decir, podemos elegir el color en función de una fórmula. Por ejemplo, para que cada porción de un gráfico de Tarta nos pinte en función de la familia del artículo la expresión sería esta:
Otra opción podría ser el combinar una expresión en función del año del registro:
"#" + numberToStringHex(#AÑO)
Esta propiedad solamente estará disponible en gráficos de tipo líneas, áreas, puntos y curvas. En esta propiedad debemos especificar el tipo de dato de la categoría. Los valores posibles son:
Texto.
Numérico.
Tiempo.
Si queremos acumular por categoría elegiremos el tipo texto, en caso contrario, la categorías se tratarán como coordenadas.
En los tipos de gráfico en los que no está disponible, los valores de la categoría serán ordenados como texto.
Si dejamos esa propiedad en blanco, se usará como texto lo que hayamos establecido en la propiedad categoría. En el caso de que queramos usar un texto distinto, podremos especificarlo mediante una fórmula. Por ejemplo, si estamos generando un gráfico de ventas por cliente a partir de una tabla de facturas, si en la categoría hemos usado el enlace a clientes #ENT
, en esta propiedad podríamos establecer el nombre del cliente (#ENT_NAME
), ya que de lo contrario como texto de la categoría se pintaría su ID.
Si en un gráfico de tarta queremos mostrar el porcentaje que supone cada porción del gráfico lo estableceremos en esta propiedad. Para ello disponemos de las variables del sistema sysSerieTotal y sysSerieValue y la fórmula sería:
(100*sysSerieValue)/sysSerieTotal
Dado que el dato texto categoría es alfabético, convienen que demos formato al número obtenido con la función de fórmulas nuberToString(). Ejemplo:
numberToString(((100*sysSerieValue)/sysSerieTotal), "L", 0)
También podríamos añadir el nombre de la categoría y el símbolo %, además del valor del porcentaje:
#ART.NAME + ": " + numberToString(((100*sysSerieValue)/sysSerieTotal), "L", 0) + "%"
De este modo el resultado sería algo similar a esto:
Impresora: 23%
Si dejamos esa propiedad en blanco, se usará como texto lo que hayamos establecido en la propiedad agrupamiento. En el caso de que queramos usar un texto distinto, podremos especificarlo mediante una fórmula.
En esta propiedad indicaremos si queremos que en el gráfico se muestren etiquetas con los valores de la serie. Por ejemplo, si se trata de un informe de ventas por cliente de tipo barras verticales, dentro de cada barra se pintaría el importe total acumulado. Los valores posibles son:
Verdadero.
Falso.
Esta propiedad solamente estará disponible el el valor de la propiedad visibilidad de etiquetas de la serie es verdadero. En esta propiedad indicaremos cómo queremos que se muestren las etiquetas.Los valores posibles son:
Centrado.
Dentro (arriba/horizontal).
Dentro (abajo/tangencial).
Fuera.
Esta propiedad solamente estará disponible el el valor de la propiedad visibilidad de etiquetas de la serie es verdadero y si la propiedad tema del gráfico tiene el valor ninguno. Nos permitirá configurar la fuente de las etiquetas.
Esta propiedad solamente estará disponible el el valor de la propiedad visibilidad de etiquetas de la serie es verdadero y si la propiedad tema del gráfico tiene el valor ninguno. Nos permitirá configurar el color de la fuente de las etiquetas.
Esta propiedad solamente estará disponible el el valor de la propiedad visibilidad de etiquetas es verdadero. Si queremos que las etiquetas se pinten en un ángulo determinado, en esta propiedad especificaremos el mismo. El valor por defecto es 0.
Esta propiedad solamente estará disponible el el valor de la propiedad visibilidad de etiquetas es verdadero. Si queremos que a cada etiqueta se le añada un prefijo, especificaremos éste a través de una fórmula. Ejemplo: "$"
Esta propiedad solamente estará disponible el el valor de la propiedad visibilidad de etiquetas es verdadero. Si queremos que a cada etiqueta se le añada un sufijo, especificaremos éste a través de una fórmula. Ejemplo: "€"
Se debe expresar en unidades del eje de categorías. Si lo dejamos a 0 se aplicará de forma automática.
Este sub-objeto representa cada eje del gráfico. Sus propiedades son:
Etiqueta alfanumérica que identifica al objeto. Este identificador será el que se usa para referenciarlo en los inspectores y en las propiedades de otros objetos.
Etiqueta alfanumérica que servirá como descriptor del gráfico. Es el texto que se presentará al usuario final de la aplicación para referenciarlo.
Podemos definir una etiqueta por cada idioma presente en el proyecto.
Podemos definir el estilo privado, que limita el acceso del usuario final al objeto desde puntos donde no se haya programado el acceso al mismo.
Esta propiedad nos permite documentar el uso del objeto.
Tipo de eje. Los valores posibles son:
Eje categorías categorías: es el eje horizontal del gráfico y en el ejemplo descrito antes, es donde se representará un registro por cada cliente, pudiendo mostrar cualquier campo o fórmula (por ejemplo el nombre del cliente).
Eje valor: es el eje vertical del gráfico y en el ejemplo descrito antes, es donde se representará el rango de los importes de venta de cada cliente, desde 0 (en el caso de ser todos los valores positivos) hasta el máximo del importe de ventas.
Esta propiedad estará visible si en la propiedad tipo del eje hemos seleccionado el valor eje categorías y nos permitirá indicar de qué tipo es la categoría. Los valores posibles son:
Numérico.
Texto.
Tiempo.
El tipo deberá ser el mismo que el tipo de categoría de la serie del gráfico.
Nos permite establecer un título al eje. Su contenido se establecerá mediante una fórmula.
Esta opción estará disponible si en la propiedad tema del gráfico hemos seleccionado el valor ninguno. Nos permitirá configurar la fuente del título del eje.
Esta opción estará disponible si en la propiedad tema del gráfico hemos seleccionado el valor ninguno. Nos permitirá configurar el color de la fuente del título del eje.
En esta propiedad indicaremos si queremos que en el gráfico se muestren etiquetas del eje.Los valores posibles son:
Verdadero.
Falso.
Esta opción estará disponible si en la propiedad tema del gráfico hemos seleccionado el valor ninguno. Nos permitirá configurar la fuente de las etiquetas del eje.
Esta opción estará disponible si en la propiedad tema del gráfico hemos seleccionado el valor ninguno. Nos permitirá configurar el color de la fuente de las etiquetas del eje.
Esta propiedad estará disponible solamente si hemos establecido en valor verdadero en la propiedad etiquetas visibles. Si queremos que las etiquetas se pinten en un ángulo determinado, en esta propiedad especificaremos el mismo. El valor por defecto es 0.
Esta opción estará disponible si en la propiedad tipo categoría del eje hemos seleccionado el valor tiempo y en la propiedad tema del gráfico hemos seleccionado el valor ninguno. Nos permitirá especificar una máscara para aplicar al dato de tipo tiempo del eje. Las máscaras para fechas son:
Esta opción estará disponible si en la propiedad tipo categoría del eje hemos seleccionado el valor numérico y en la propiedad tema del gráfico hemos seleccionado el valor ninguno. Nos permitirá configurar un prefijo para las etiquetas del eje. Su contenido se establecerá mediante una fórmula.
Esta opción estará disponible si en la propiedad tipo categoría del eje hemos seleccionado el valor numérico y en la propiedad tema del gráfico hemos seleccionado el valor ninguno. Nos permitirá configurar un sufijo para las etiquetas del eje. Su contenido se establecerá mediante una fórmula.
Esta opción estará disponible si en la propiedad tipo categoría del eje hemos seleccionado el valor numérico y en la propiedad tema del gráfico hemos seleccionado el valor ninguno. Nos permitirá configurar el número de decimales que se usarán en las etiquetas del eje.
Esta opción estará disponible si en la propiedad tema del gráfico hemos seleccionado el valor ninguno. Nos permitirá configurar el estilo que se aplicará a las líneas del eje. Los valores posibles son:
Sin líneas: no se pintarán las líneas en el eje.
Sólida: se pintará una línea sólida (_____).
Rayas: se pintará una línea de rayas (----).
Puntos: se pintará una línea de puntos (...).
Raya punto: se pintará una línea combinando una raya y un punto (-.-.-).
Raya punto punto: se pintará una línea combinando una raya y dos puntos (-..-..-).
Esta propiedad estará disponible si en la propiedad estilo línea hemos seleccionado un valor distinto de ninguno. Nos permitirá configurar el color de la línea del eje.
Esta propiedad estará disponible si en la propiedad estilo línea hemos seleccionado un valor distinto de ninguno. Nos permitirá configurar el tamaño en píxels de la línea del eje.
En esta propiedad indicaremos el número de líneas principales que queremos presentar en el eje.
En esta propiedad indicaremos el número de líneas menores que se presentarán entre cada línea principal.
Valor mínimo que se representará en el eje.
Valor máximo que se representará en el eje.
Nos permite indicar si queremos que los valores del eje se muestren en orden inverso. Por defecto se representan de menor a mayor. Si invertimos el orden, se presentarán de menor a mayor.
Para facilitar la creación de un gráfico se dispone de un asistente, que se iniciará automáticamente al añadir un objeto de este tipo en un proyecto de aplicación.
En el primer paso debemos indicar el tipo de gráfico que queremos usar (líneas, áreas, etc).
En el paso siguiente debemos especificar:
Tabla: tabla de un proyecto de datos heredado que se usará para generar el gráfico.
Categoría: campo generador de cada serie y por el que multi-partirá los registros para acumular los valores. Por ejemplo, si queremos realizar un gráfico con las ventas realizadas a los clientes desde la tabla de Facturas de venta, la propiedad categoría será el campo ID del cliente (también podríamos seleccionar el nombre del cliente, su país, ...).
Valor: campo o fórmula acumulador por cada serie. Por ejemplo, si queremos realizar un gráfico con las ventas realizadas a los clientes desde la tabla de Facturas de venta, la propiedad Valor podría ser el campo TOTAL_FRA.
Este asistente permite crear un gráfico básico, en el caso de que queramos crear gráficos más complejos, por ejemplo, que se requiera especificar una fórmula para establecer la categoría o el valor, podremos dejar esos parámetros del asistente vacíos y establecerlos una vez creado el gráfico.
Una vez creado el gráfico, se mostrará una previsualización del mismo en el panel central de Velneo vDevelop.
Podemos hacer uso de la señal item: simple clic en gráficos para obtener en un manejador de evento la lista de registros correspondientes a un elemento de un gráfico: una serie, una barra, un agrupamiento, etc.
Si la señal está definida, el usuario final, cuando pase el cursor sobre el gráfico se cambiará a una mano.
NOTA
En tiempo de ejecución, si el usuario hace clic sobre una categoría quedarán seleccionados los registros que la componen. Esto nos permitirá ejecutar manejadores de evento sobre los mismos.
Nota
Aunque los gráficos de tarta soportan agrupamientos, no es posible mostrar el nombre de los agrupamientos para cada tarta que se crea.
Nota
Los agrupamientos soportan la ordenación de las categorías, realizándose por cada serie generada para el agrupamiento, es decir, por cada categoría se mostrará de forma ordenada los elementos calculados de la agrupación.
Truco
Si en un gráfico de barras queremos que la categoría sea el mes de una fecha (month(#FCH)), dado que en este tipo de gráfico la categoría será ordenada como cadena es decir: 1, 10, 11, 12, 2, 3...), para ordenarlo por mes lo que haremos será justificar el número del mes a la derecha y rellenando con ceros a la izquierda: rightJustified(month(#FCH), 2, "0"), así, los meses saldrán ordenados como se desea: 01, 03, 03, 04, 05, 06...
Carácter
Descripción
d
Día del mes (1-31)
dd
Día del mes (01-31)
ddd
Día de la semana (Lun-Dom)
dddd
Día de la semana (Lunes-Domingo)
M
Mes (1-12)
MM
Mes (01-12)
MMM
Mes (Ene-Dic)
MMMM
Mes (Enero-Diciembre)
yy
Año (00-99)
yyyy
Año (0000-9999)
\
Usar el carácter con algún símbolo de los anteriores para ser usado como separador y no como cadena de formato. Ejemplo: si en una cadena de formato escribimos \d, la "d" no será tomada como cadena de formato, sino como separador.