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 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();
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top