Lenguaje de expresiones JSON para Highcharts

Los elementos visuales de Highcharts aceptan la mayoría de los valores JSON válidos, operadores aritméticos estándar, operadores de cadena y operadores condicionales. El lenguaje de expresiones JSON conecta JSON a API o conjuntos de datos para permitir el relleno de datos dinámico y la modificación de estructuras JSON.

Con el lenguaje de expresiones JSON, las expresiones se representan como matrices, donde el primer elemento especifica la operación y los siguientes son los argumentos. Por ejemplo, ["unique", [1, 2, 2]] aplica la operación "unique" a la matriz [1, 2, 2], dando como resultado [1, 2].

También admite expresiones anidadas. Las expresiones anidadas son expresiones que contienen otras expresiones como argumentos. Por ejemplo, ["split", ["toUpper", "sample text"], " "] primero convierte la cadena sample text a mayúsculas y luego la divide en una matriz de palabras, dando como resultado ["SAMPLE", "TEXT"].

Expresiones aritméticas admitidas

Puede utilizar estas expresiones aritméticas con el lenguaje de expresiones JSON:

Operación Expresión Entrada Salida
Suma ["+", operando 1, operando 2] { suma: ["+", 2, 4] } { suma: 6 }
Resta ["-", operando 1, operando 2] { diferencia: ["-", 10, 3] } { diferencia: 7 }
Multiplicación ["*", operando 1, operando 2] { producto: ["*", 5, 6] } { producto: 30 }
División ["/", operando 1, operando 2] { cociente: ["/", 20, 4] } { cociente: 5 }
Módulo ["%", operando 1, operando 2] { resto: ["%", 15, 4] } { resto: 3 }
Exponenciación ["**", base, exponente] { potencia: ["**", 2, 3] } { potencia: 8 }
Valor absoluto ["abs", operando] { absoluto: ["abs", -5] } { absoluto: 5 }
Raíz cuadrada ["sqrt", operando] {raíz cuadrada: ["sqrt", 16] } { raíz cuadrada: 4 }
Logaritmo (base 10) ["log10", operando] { logaritmo: ["log10", 100] } { logaritmo: 2 }
Logaritmo natural ["ln", operando] { ln: ["ln", Math.E] } { ln: 1 }
Redondeo ["round", operando] { redondeado: ["round", 3.7] } { redondeado: 4 }
Redondeo por defecto ["floor", operando] { defecto: ["floor", 3,7] } { defecto: 3 }
Redondeo por exceso ["ceil", operando] {exceso: ["ceil", 3.2] } { exceso: 4 }
Seno ["sin", operando] { seno: ["sin", 0] } { seno: 0 }
Coseno ["cos", operando] { coseno: ["cos", 0] } { coseno: 1 }
Tangente ["tan", operando] { tangente: ["tan", Math.PI] } { tangente: 0 }

Operaciones con matrices compatibles

  • map: aplica una función de asignación a cada elemento de una matriz y devuelve una nueva matriz con los valores transformados.

    Por ejemplo, ["map", [1, 2, 3], ["*", ["item"], 2]] asigna cada elemento de la matriz [1, 2, 3] multiplicándolo por 2.

  • filter: filtra una matriz basándose en una condición dada y devuelve una nueva matriz que contiene sólo los elementos que cumplen la condición.

    Por ejemplo, ["filter", [1, 2, 3, 4, 5], ["==", ["%", ["item"], 2], 0]] filtra la matriz [1, 2, 3, 4, 5] para incluir solo los números pares.

  • reduce: reduce una matriz a un único valor aplicando una función reductora a cada elemento y acumulando el resultado.

    Por ejemplo, ["reduce", [1, 2, 3, 4, 5], ["+", ["acc"], ["item"]], 0] reduce la matriz [1, 2, 3, 4, 5] a la suma de sus elementos.

  • get: recupera un valor de un objeto o una matriz especificando una clave o un índice.

    Por ejemplo, ["get", ["item"], "name"] recupera el valor de la propiedad "name " del elemento actual.

  • unique: devuelve solo elementos únicos dentro de una matriz.

    Por ejemplo, ["unique", [1, 2, 2]] devuelve [1, 2].

Expresiones personalizadas

Puede utilizar expresiones personalizadas para mejorar la funcionalidad de los elementos visuales de Highcharts.

getColumn
Utilice la expresión getColumn para devolver valores de los índices de columna especificados. Por ejemplo, esta tabla muestra una lista de ubicaciones y la productividad de las respectivas impresoras:
Nombre de la ubicación Productividad de la impresora
Ubicación A 100
Ubicación B 50
Ubicación C 75

Esta consulta getColumn genera una matriz que muestra todos los nombres de ubicación junto con la productividad de las respectivas impresoras:

{
	location name: ["getColumn", 0], 
	printer throughput: ["getColumn", 1]
}

Salida:

{
	location name: ["Location A", "Location B", "Location C"],
	printer throughput: [100, 50, 75]
}

También puede proporcionar varias columnas a la vez para generar una matriz de matrices, como se muestra en este ejemplo:

{
	values: ["getColumn", 0, 1]
}

Salida:

{
	values: [["Location A", 100], ["Location B", 50], ["Location C", 75]]
}

De forma similar a getColumn, estas expresiones se pueden utilizar para devolver valores de columna de contenedores de campo o temas:

  • getColumnFromGroupBy devuelve columnas del campo Agrupar por. El segundo argumento es el índice de la columna a devolver. Por ejemplo, ["getColumnFromGroupBy", 0] devuelve los valores del primer campo como una matriz. Puede proporcionar varios índices para obtener una matriz de matrices donde cada elemento corresponde al campo del contenedor del campo Agrupar por.
  • getColumnFromValue devuelve las columnas del contenedor del campo Valor. Puede proporcionar varios índices para obtener una matriz de matrices donde cada elemento corresponde al campo del contenedor del campo Valor.
  • getColorTheme devuelve la paleta de colores actual de un tema, como se muestra en este ejemplo:
    {
    "color": ["getColorTheme"]
    }

formatValue
Utilice la expresión formatValue para aplicar formato a sus valores. Por ejemplo, esta expresión formatea la etiqueta del eje x con el valor de formato que se especifica en el primer campo de los contenedores de campo:
"xAxis": {
		"categories": ["getColumn", 0],
		"labels": {
		"formatter": ["formatValue", "value", 0]
		}
	}