Highcharts rompe il mio allineamento dei dati in un modo strano
-
12-10-2019 - |
Domanda
Highcharts (link a specifica demo - cliccare Opzioni di visualizzazione per confrontare sotto il codice) per rendere alcuni dati per uso personale-uso.
[Nota: questo è quasi sicuramente un errore di me-correlata, in modo da non intendo insinuare che Highcharts è la colpa - è davvero una meravigliosa api!]
Quando si imposta il series.data ??em> campo dell'oggetto di grafico, che riscontrano strani sezionamento matrice.
Per esempio, questo funziona bene:
series: [{
name: 'seriesName',
data: [22, 24, 15]
}]
e tre punti dati vengono tracciati con i valori di 22, 24 e 15.
Tuttavia,
series: [{
name: 'sillySeries',
data: chartData[0]
}]
rende 3 punti con i valori 2, 4 e 5 e titoli dei punti sono 2, 2 e 1 rispettivamente ... cioè, esso è spaccare le voci di matrice in un titolo e quindi un valore per numeri a due cifre .
mi dimostra che console.log ChartData sembra
22,24,15,2010-9,2010-10,2010-11
(3 valori per 3 mesi)
Anche se le matrici reali sono più simili [22,24,15] [2010-9,2010-10,2010-11]
Il mio 2d-array chartData[][]
ha indici [column][row]
per i dati, e ho pensato che chiedere chartData[0]
sarebbe tornato un array.
Forse la mia domanda dovrebbe essere: Come faccio a restituire un array di 1d da una rappresentazione matrice 2D per impostare le proprietà / valori in oggetti JavaScript? Sembra che io sto probabilmente si affaccia qualcosa di molto evidente.
modifica:
data: [24]
Locali un punto a 24, impressionante.
data: '24'
divide i dati come titolo e quindi il valore, tracciando in modo efficace un punto in 4 e non 24.
Quindi, la rappresentazione diventa una stringa quando provo a passare un array di dati campo . Un modo per fare come string.toArray?
Edit 2:
chartData[col][row]
viene dichiarata come array vuoto
var chartData = [];
e successivamente riempito con valori di iterazione sopra le righe e le colonne di una tabella HTML, in cui i contenuti ciclo più interno assomigliano
chartData[cellIndex][rowIndex] = $(currentCell).text();
Soluzione 2
parseInt () ha salvato la giornata.
qualcosa di simile
for (i=0; i<chartData[0].length; ++i) {
columnOne.push(parseInt(chartData[0][i]);
}
mi ha dato una matrice che avrei potuto utilizzare per visualizzare i dati con il campo dati nell'oggetto di notazione
data: columnOne
o più letteralmente
chart1.series [0] = .data columnOne;
Grazie James per aver ricordato
Mentre ChartData è probabilmente un array, suona come ChartData [0] è una stringa.
che portano alla mia scoperta che i dati in mio allineamento era in realtà tutte le stringhe, che ho tenuto in questo modo perché alcuni campi sono stringhe, alcuni sono date (AAAA-MM-DD) e alcuni sono solo int.
Molte grazie a tutti e due =)
Altri suggerimenti
Mentre ChartData è probabilmente un array, suona come ChartData [0] è una stringa. Quando si utilizza un indice di array su una stringa si ottiene il carattere in quella posizione, che è esattamente quello che stai vivendo ...
rende 3 punti con i valori 2, 4 e 5 e titoli dei punti sono 2, 2 e 1 rispettivamente ... cioè, esso è spaccare le voci di matrice in un titolo e quindi un valore per numeri a due cifre .
Ci sono molti modi per definire le matrici all'interno di array in JavaScript; qui è uno:
var chartData = [
[22,24,15]
,['2010-9','2010-10','2010-11']
];
Bene, questa non è una vera risposta, ma potrebbe aiutarti.
Highcharts consente di pre-elaborare alcune opzioni. Nel tuo caso, si potrebbe fare qualcosa di simile:
options.series[0].data = new Array(1, 0, 4);
di riferimento doc: http://www.highcharts.com/documentation/how -to-uso opzioni #
Se non funziona, commento di cui sopra.