javascript - 如何将小时和分钟数据提供给 chartJS

标签 javascript chart.js momentjs data-visualization

我正在尝试使用 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 提供数据标签吗?

最佳答案

您不能只将 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>

关于javascript - 如何将小时和分钟数据提供给 chartJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46022383/

相关文章:

javascript - 在javascript中将错误的ISO格式解析为一个好的日期

javascript - document.getElementById(..) 为 null

jquery - jquery如何获取元素的属性

javascript - 在窗口调整大小之前,ChartJS 不会在 Bootstrap 选项卡内绘制图形

javascript - 部分 View 中的多个 Chart.js 图表相互覆盖

javascript - 如何在没有时移的情况下解析数据库中的日期字符串?

javascript - MomentJS 日期解析

javascript - 我搞砸了 JSON 对象、数组和字符串

javascript - 添加 1 - Javascript Android Studio

javascript - 增加单选按钮的大小