1 Soalan: Grafik garis pelbagai data dari jadual

soalan dicipta di Wed, May 8, 2019 12:00 AM

Saya cuba membuat graf garisan pelbagai menggunakan js dan sudut carta. Menggunakan peta saya boleh mengurangkan data json ke array Dimentional tunggal tetapi saya perlu menukar salah satu lajur (kepala) sebagai label dengan lajur purata sebagai paksi y dan lajur timestamp sebagai paksi x

Contoh format json o /p dari DB

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 yang dijangkakan untuk chartjs untuk output multi-axis

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

Saya hanya dapat menukarkan setiap data lajur sebagai array dimensi tunggal tetapi kerana saya menukar keseluruhan set data ke array 1D terdapat kemungkinan ketidakpadanan data, jika saya cuba untuk mendapatkan graf secara langsung.

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});

Mohon beritahu saya cadangan anda mengenai cara menukar data ke format yang diharapkan.

    
1
1 Jawapan                              1                         

Anda telah mula mengurangkan objek dengan mengindeks hasilnya:

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;
}, {});

kemudian ekstrak nilai dari hasil

const result = Object.values(data);

selepas itu anda boleh pad medan .data untuk mendapatkan armenian yang betul

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

    
0
2019-05-08 16: 23: 28Z
  1. Terima kasih, ia bekerja
    2019-05-10 16: 39: 41Z
sumber diletakkan di sini
Soalan lain