【问题标题】:How to feed hour and minute data into chartJS如何将小时和分钟数据输入chartJS
【发布时间】:2018-02-11 19:49:21
【问题描述】:

我正在尝试使用 Chart.js 制作折线图。我的数据格式为:

var result = [{x:"18:00",y:"230"},{x:"19:00",y:"232"},{x:"20:00",y:"236"},{x:"22:00",y:"228"}];

其中 x 表示带有小时和分钟的时间。我是这样输入数据的

var ctx = document.getElementById("myChart").getContext('2d');
    var myChart = new Chart(ctx, {
        type: 'line',
        data: {
            labels: ["00:00","01:00","02:00","03:00","04:00","05:00","06:00","07:00","08:00","09:00","10:00","11:00","12:00","13:00","14:00","15:00","16:00","17:00","18:00","19:00","20:00","21:00","22:00","23:00","24:00"],
            datasets: [{
                label: 'Voltage Fluctuation',
                data: result,
                borderWidth: 1
            }]
        },
        options: {
            scales: {
                xAxes: [{
                    type: 'time',
                    position: 'bottom',
                    unit: 'minute',
        time: {
          displayFormats: {
            hour: 'HH:mm'
          }
        }
      }],
    },
  }
});

我得到一个空图表。我哪里错了?我觉得我的标签做错了,因为它们没有出现在图表上,但我不明白怎么做。有什么方法可以用 momentjs 提供数据标签?

【问题讨论】:

    标签: javascript chart.js momentjs data-visualization


    【解决方案1】:

    您不能只将result 数组传递给data,因为它的格式不正确。 data 属性需要一个数字数组。因此,在将它们用于图表之前,您需要解析标签 (使用 moment.js) 和来自 result 数组的数据。

    下面是标签和数据应该如何从 result 数组中解析出来并输入图表的方法:

    var result = [{ x: "18:00", y: "230" }, { x: "19:00", y: "232" }, { x: "20:00", y: "236" }, { x: "22:00", y: "228" }];
    
    // parse labels and data
    var labels = result.map(e => moment(e.x, 'HH:mm'));
    var data = result.map(e => +e.y);
    
    var ctx = document.getElementById("myChart").getContext('2d');
    var myChart = new Chart(ctx, {
       type: 'line',
       data: {
          labels: labels,
          datasets: [{
             label: 'Voltage Fluctuation',
             data: data,
             borderWidth: 1
          }]
       },
       options: {
          scales: {
             xAxes: [{
                type: 'time',
                time: {
                   unit: 'hour',
                   displayFormats: {
                      hour: 'HH:mm'
                   }
                }
             }]
          },
       }
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
    <canvas id="myChart"></canvas>

    【讨论】:

    • 难道没有办法只制作这条线吗?而不是图表占用的区域?
    • 是的,为您的数据集设置fill: false
    • 再次感谢
    猜你喜欢
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多