将数据从.csv(d3.js)传递到Chart.js,我是否做错了什么?

yshpjwxd  于 2022-11-07  发布在  Chart.js
关注(0)|答案(1)|浏览(201)

所以我可以看到d3.js完成了它的工作,并从.csv中检索数据(在浏览器控制台中可见),但由于某种原因,我不能在图表上传递这些数据,日志中没有错误等等。)

  1. const chartData = 'data/data.csv';
  2. d3.csv(chartData).then(function(datapoints) {
  3. console.log(datapoints)
  4. const data1 = [];
  5. const data2 = [];
  6. const data3 = [];
  7. for (var i = 0; i < datapoints.lenght; i++) {
  8. data1.push(datapoints[i].data1)
  9. data2.push(datapoints[i].data2)
  10. data3.push(datapoints[i].data3)
  11. }
  12. const ctx = document.getElementById('myChart').getContext('2d');
  13. const myChart = new Chart(ctx, {
  14. type: 'line',
  15. data: {
  16. labels: ['Data1', 'Data2', 'Data3'],
  17. datasets: [{
  18. label: 'Live data (someday)',
  19. data: [data1, data2,data3],
  20. backgroundColor: [
  21. 'rgba(0, 0, 255)',
  22. ],
brqmpdu1

brqmpdu11#

问题是datasets.data最终是一个数组的数组,但是Chart.js需要一个平面的值数组。如果不看数据,很难判断,但是你可能需要定义3个单独的datasets

  1. const chartData = 'data/data.csv';
  2. d3.csv(chartData).then(function(datapoints) {
  3. const myChart = new Chart('myChart', {
  4. type: 'line',
  5. data: {
  6. labels: datapoints.map((o, i) => i),
  7. datasets: [
  8. {
  9. label: 'Live data 1 (someday)',
  10. data: datapoints.map(o => o.data1),
  11. backgroundColor: 'rgb(0, 0, 255)'
  12. },
  13. {
  14. label: 'Live data 2 (someday)',
  15. data: datapoints.map(o => o.data2),
  16. backgroundColor: 'rgb(0, 255, 0)'
  17. },
  18. {
  19. label: 'Live data 3 (someday)',
  20. data: datapoints.map(o => o.data3),
  21. backgroundColor: 'rgb(255, 0, 0)'
  22. }
  23. ],
  24. ...
展开查看全部

相关问题