pauses Highcharts mon tableau de données d'une manière étrange
-
12-10-2019 - |
Question
J'utilise Highcharts (lien vers un démo spécifique - cliquez sur Afficher les options pour comparer le code ci-dessous) pour rendre des données pour des fins personnelles.
[Note: ce qui est presque certainement une erreur liée à moi, donc je ne veux pas dire insinuer que Highcharts est en faute - c'est vraiment un merveilleux api!]
Lors du réglage du series.data ??em> champ de l'objet graphique, je rencontre tableau étrange tronçonnage.
Par exemple, cela fonctionne très bien:
series: [{
name: 'seriesName',
data: [22, 24, 15]
}]
Et trois points de données sont tracées avec des valeurs 22, 24 et 15.
Cependant,
series: [{
name: 'sillySeries',
data: chartData[0]
}]
rend 3 points avec les valeurs 2, 4 et 5 et les titres des points sont 2, 2 et 1 respectivement ... qui est, cette division des entrées de tableau dans un titre, puis une valeur pour un nombre à deux chiffres .
me montre CONSOLE.LOG que ChartData ressemble
22,24,15,2010-9,2010-10,2010-11
(3 valeurs pour 3 mois)
Bien que les tableaux réels sont plus comme [22,24,15] [2010-9,2010-10,2010-11]
Mon chartData[][]
2d-tableau a des indices de [column][row]
pour les données, et je me suis dit que demander chartData[0]
retournerait un tableau.
Peut-être que ma question devrait être: Comment puis-je retourner un tableau 1d d'une représentation du tableau 2d pour définir les propriétés / valeurs dans les objets javascript? Il semble que je suis sans doute sur quelque chose de très évident.
edit:
data: [24]
parcelles un point à 24, impressionnant.
data: '24'
divise les données que le titre et la valeur, tracer efficacement un point à 4 et non 24.
Ainsi, la représentation devient une chaîne lorsque je tente de passer un tableau à la données terrain. De toute façon je peux faire comme string.toArray?
modifier 2:
chartData[col][row]
est déclarée comme un tableau vide
var chartData = [];
et ensuite rempli avec des valeurs par itérer sur les lignes d'une table HTML et des colonnes, où le contenu de la boucle les plus intimes ressemblent
chartData[cellIndex][rowIndex] = $(currentCell).text();
La solution 2
parseInt () a sauvé la journée.
quelque chose comme
for (i=0; i<chartData[0].length; ++i) {
columnOne.push(parseInt(chartData[0][i]);
}
m'a donné un tableau que je pourrais ensuite utiliser pour afficher les données avec le champ de données de notation dans l'objet
data: columnOne
ou plus littéralement
chart1.series [0] = .data columnOne;
Merci d'avoir signalé James
Alors que ChartData est probablement un tableau, il semble que ChartData [0] est une chaîne.
qui conduisent à ma découverte que les données de mon tableau était en fait toutes les chaînes que je gardais cette façon parce que certains champs sont des chaînes, certaines sont des dates (AAAA-MM-JJ) et certains sont seulement ints.
Un grand merci à vous deux =)
Autres conseils
Alors que ChartData est probablement un tableau, il semble que ChartData [0] est une chaîne. Lorsque vous utilisez un index de tableau sur une chaîne que vous obtenez le caractère à cette position, ce qui est exactement ce que vous vivez ...
rend 3 points avec les valeurs 2, 4 et 5 et les titres des points sont 2, 2 et 1 respectivement ... qui est, cette division des entrées de tableau dans un titre, puis une valeur pour un nombre à deux chiffres .
Il y a plusieurs façons de définir les tableaux dans les tableaux en javascript; voici un:
var chartData = [
[22,24,15]
,['2010-9','2010-10','2010-11']
];
Eh bien, ce n'est pas une vraie réponse, mais peut vous aider.
Highcharts vous permet de prétraiter certaines options. Dans votre cas, vous pourriez faire quelque chose comme:
options.series[0].data = new Array(1, 0, 4);
Référence doc: http://www.highcharts.com/documentation/how -À-utiliser les options de #
Si cela échoue, les commentaires ci-dessus.