1 Question: Graphe linéaire multi-jeux de données du tableau

question créée à Wed, May 8, 2019 12:00 AM

J'essaie de créer un graphique linéaire multi-ensembles à l'aide d'un graphique js et angulaire. En utilisant map, je peux réduire les données json à un tableau Dimentional unique, mais je dois convertir une des colonnes (en-tête) en tant qu’étiquette, la colonne moyenne en tant qu’axe des y et une colonne d’horodatage en tant qu’axe des x

Exemple de format JSON o /p de la base de données

var dataset = 
[{id:1, head:test1,timestamp:5/6/2019,average:12},]
{id:2, head:test1,timestamp:6/6/2019,average:15},
{id:3, head:test2,timestamp:5/6/2019,average:7},
{id:4, head:test2,timestamp:6/6/2019,average:20},
{id:5, head:test3,timestamp:6/6/2019,average:13}]

Format attendu pour les graphiques pour une sortie sur plusieurs axes y

 {data : [12, 15], label:test1},
 {data : [7, 20], label:test2},
 {data : [0, 13], label:test3},

Je ne peux convertir que chacune des données de colonne sous forme de tableau à une dimension, mais comme je convertis l'ensemble du jeu de données en tableau 1D, il existe un risque de discordance des données. Si j'essaie d'extraire directement un graphique.

var labels = dataset.map(function(obj) {return obj.head});
var tstamp = dataset.map(function(obj) {return obj.timestamp});
var tavg = dataset.map(function(obj) {return obj.average});

Faites-moi savoir vos suggestions sur la conversion des données au format attendu.

    
1
1 Réponses                              1                         

Vous devez d'abord réduire l'objet en indexant le résultat:

const data = dataset.reduce((accu, item) => {
  if (accu[item.head] == null) accu[item.head] = { data: [], label: item.head };
  accu[item.head].data.push(item.average);
  return accu;
}, {});

puis extrayez les valeurs du résultat

const result = Object.values(data);

après cela, vous pouvez renseigner le champ de résultat .data pour obtenir la bonne arité

result.forEach(line => {
  while (line.data.length < 2) 
    line.data.unshift(0);
});

    
0
2019-05-08 16: 23: 28Z
  1. Merci, cela a fonctionné
    2019-05-10 16: 39: 41Z
source placée ici