使用React js创建一个可以读取.csv文件并在chartjs中显示的网站

问题描述 投票:0回答:1

我尝试这样做,但不断收到此错误“错误:画布已在使用中。必须先销毁 ID 为“0”的图表,然后才能重新使用画布。”,即使我使用了 destroy 也不起作用。

我尝试使用react.js读取.csv文件并使用chart.js显示。

import React from 'react'
import { Chart } from 'react-chartjs-2'
import * as d3 from 'd3'
//import { csv } from 'd3'

const BarChart1 = () => {
  let myChart;
    let filename = 'drug-abusers-by-gender.csv';
    d3.csv(filename, function(loadedData) {
        //console.log(loadedData);

        let data = [];
        let labels = [];

        for (let i=1; i < loadedData.length; i++) {
            console.log(loadedData[i]);

            let year = loadedData[i].year;
            labels.push(year);

            let num = loadedData[i].no_of_drug_abusers;
            data.push(num);
            //console.log(num);
        }

        let options = {
            type: 'line',
            data: {
                labels: labels,
                datasets: [{
                    data: data,
                    fill: false,
                    pointRadius: 0,
                    pointHoverRadius: 0,
                    borderColor: 'rgb(100,100,100)'
                }]
            }
        };

        //myChart = new Chart(document.getElementById('BarChart1'), options);
    })

    return (
        <canvas id="BarChart1" ></canvas>
      );
}

export default BarChart1
reactjs csv chart.js
1个回答
0
投票

我也遇到过这个问题。首先,我升级到了 Chart.js 的最新版本,这并没有修复它,但它确实提供了“remove()”函数来删除画布。

我所做的就是首先删除画布:

<div id="fullReport1">
    <canvas id="myChart1"></canvas>
</div>

然后像这样创建一个新的画布,并使用 jQuery 将其附加到我有画布的 div 中:

var old_canvas = $('#myChart1');
if(old_canvas) old_canvas.remove();

var newCanvas = $('<canvas/>',{
                   'class':'chart1',
                    id: 'myChart1'                   
                });
$('#fullReport1').append(newCanvas);

之后,我创建图表并填充画布。

(我不太记得在哪里找到了这个解决方案,所以这里的其他人值得称赞,因为我认为我确实在 stackoverflow 上找到了它)

© www.soinside.com 2019 - 2024. All rights reserved.