【问题标题】:donut chart not rendering with csv data chart.js圆环图未使用 csv 数据 chart.js 呈现
【发布时间】:2021-03-08 19:30:35
【问题描述】:

我正在尝试使用 csv 文件中的数据创建带有 chart.js 的圆环图。到目前为止,以下是我的脚本,但它不起作用。任何指导都表示赞赏。

<script>
var file='donut.csv';
d3.csv(file).then(makeChart); //use d3.csv to read file
function makeChart(types){
var can=types.map(function(d){return d.cancelled});
var suc=types.map(function(d){return d.success});
var fa=types.map(function(d){return d.failed});
 {
var chart=new Chart(document.getElementById("doughnut-chart"), {
    type: 'doughnut',
    data: {
        labels: ["Cancelled","Success", "Failed"],
      datasets: [
        {
          label: "Population (millions)",
          backgroundColor: ["#3e95cd", "#3cba9f","#8e5ea2"],
          data: [can,suc,fa]
        }
      ]
    },
    options: {
      title: {
        display: true,
        text: 'Weekly  Status'
      }
    }
}
}
);
</script>

我的 donut.csv 如下所示:

cancelled,300,
success,1000,
failed,20,

【问题讨论】:

    标签: chart.js


    【解决方案1】:

    由于您的CSV 数据没有标头,您应该使用d3.text 加载数据,然后使用d3.csvParseRows 将其解析为JSON 数组(请参阅https://stackoverflow.com/a/13870360/2358409)。要从JSON 数组中提取数据值,可以使用Array.map

    data: d3.csvParseRows(types).map(v => v[1])
    

    请查看您修改后的代码,看看它是如何工作的。

    d3.text("https://raw.githubusercontent.com/uminder/testdata/main/so/csv/donut.csv").then(makeChart);
    function makeChart(types) {
      new Chart('doughnut-chart', {
        type: 'doughnut',
        data: {
          labels: ['Cancelled', 'Success', 'Failed'],
          datasets: [{
            label: 'Population (millions)',
            backgroundColor: ['#3e95cd', '#3cba9f', '#8e5ea2'],
            data: d3.csvParseRows(types).map(v => v[1])
          }]
        },
        options: {
          title: {
            display: true,
            text: 'Weekly  Status'
          }
        }
      });
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/6.2.0/d3.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"></script>
    <canvas id="doughnut-chart" height="90"></canvas>

    【讨论】:

    猜你喜欢
    • 2017-06-02
    • 2018-02-09
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 2018-02-18
    相关资源
    最近更新 更多