Highcharts rompe hasta mi matriz de datos de una manera extraña
-
12-10-2019 - |
Pregunta
Estoy usando Highcharts (enlace a una demostración específica - haga clic en Ver las opciones de abajo para comparar el código) para hacer algunos datos con fines de uso personal.
[Nota: esto es casi sin duda un error de me-relacionado, por lo que no me refiero a insinuar que Highcharts tiene la culpa - es realmente una API maravilloso!]
Al ajustar el series.data ??em> campo del objeto gráfico, que encuentro extraño matriz de corte.
Por ejemplo, esta bien funciona:
series: [{
name: 'seriesName',
data: [22, 24, 15]
}]
y tres puntos de datos se representan con los valores 22, 24 y 15.
Sin embargo,
series: [{
name: 'sillySeries',
data: chartData[0]
}]
hace 3 puntos con los valores de 2, 4 y 5 y los títulos de los puntos son 2, 2 y 1, respectivamente, ... es decir, el mismo de la división de las entradas de matriz en un título y luego un valor para números de dos dígitos .
Me muestra console.log que ChartData parece
22,24,15,2010-9,2010-10,2010-11
(3 valores para 3 meses)
Aunque las matrices reales son más como [22,24,15] [2010-9,2010-10,2010-11]
Mi 2d-array chartData[][]
tiene índices [column][row]
para los datos, y pensé que pedir chartData[0]
devolvería una matriz.
Tal vez mi pregunta debería ser: ¿Cómo puedo devolver una matriz 1d a partir de una representación de matriz 2D para establecer las propiedades / valores en los objetos de javascript? Parece que probablemente estoy pasando por alto algo muy obvio.
editar
data: [24]
parcelas en un punto 24, impresionante.
data: '24'
divide los datos como el título y luego valor, el trazar efectivamente un punto en el 4 y no 24.
Así que la representación se convierte en una cadena cuando trato de pasar una matriz a la de datos de campo . Cualquier manera que puedo hacer como string.toArray?
EDIT 2:
chartData[col][row]
se declara como una matriz vacía
var chartData = [];
y, posteriormente, se llenó de valores iterando sobre las filas y columnas de una tabla HTML, donde los contenidos bucle más interior se parecen a
chartData[cellIndex][rowIndex] = $(currentCell).text();
Solución 2
parseInt () salvó el día.
algo así como
for (i=0; i<chartData[0].length; ++i) {
columnOne.push(parseInt(chartData[0][i]);
}
Me dio una matriz que luego podría utilizar para mostrar los datos con el campo de datos en el objeto de la notación
data: columnOne
o más literalmente
chart1.series [0] = .data columnOne;
Gracias James por señalar
Mientras ChartData es probablemente una matriz, que suena como ChartData [0] es una cadena.
que conducen al descubrimiento de que los datos de mi arsenal era en realidad todas las cadenas, que he tenido de esta manera debido a que algunos campos son cadenas, algunos son fechas (AAAA-MM-DD) y algunos son sólo enteros.
Muchas gracias a que ambos =)
Otros consejos
Mientras ChartData es probablemente una matriz, que suena como ChartData [0] es una cadena. Cuando se utiliza un índice de matriz en una cadena que obtenga el carácter en esa posición, que es exactamente lo que está experimentando ...
hace 3 puntos con los valores de 2, 4 y 5 y los títulos de los puntos son 2, 2 y 1, respectivamente, ... es decir, el mismo de la división de las entradas de matriz en un título y luego un valor para números de dos dígitos .
Hay muchas maneras de definir matrices dentro de las matrices de JavaScript; aquí está uno:
var chartData = [
[22,24,15]
,['2010-9','2010-10','2010-11']
];
Bueno, esto no es una respuesta real, pero podría ayudarle.
Highcharts le permite preprocesar ciertas opciones. En su caso, usted podría hacer algo como:
options.series[0].data = new Array(1, 0, 4);
referencia doc: http://www.highcharts.com/documentation/how -to-uso de opciones #
Si esto no funciona, comentario anterior.