Chartjs 时间笛卡尔轴适配器和日期库设置

vad*_*tam 6 html javascript chart.js date-fns

我正在尝试实施本教程,但无法完成。https://www.chartjs.org/docs/latest/axes/cartesian/time.html

输入:具有(时间,值)属性的对象列表。Time 是 Integer,表示 UNIX 时间(以秒为单位);值为浮点数。

该教程说“日期适配器。时间刻度需要日期库相应的适配器。请从可用的适配器中选择”。

日期库,date-fnshttps://github.com/date-fns/date-fns

问题1.如何安装/包含date-fns库?文档说“npm”,但我认为它仅适用于 Node.js,但我有一个 Django 项目,Ubuntu。如果我只是下载 zip,里面有一堆文件。

适配器,chartjs-adapter-date-fns https://github.com/chartjs/chartjs-adapter-date-fns

问题2.如何安装fns适配器?文档说“npm”,但我有一个 Django 项目,Ubuntu。但是,如果我包括<script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.bundle.min.js"></script>,我觉得就足够了。

问题3.安装适配器和日期库后,如何修复下面的脚本以使绘图正常工作(时间笛卡尔轴)?我认为这都是关于更新行point["x"] = elem.time;以将 unix 时间转换为某种适当的类型。

超文本标记语言

<canvas id="myChart"></canvas>
Run Code Online (Sandbox Code Playgroud)

JS

   let points = [];
    for(let elem of objs) {
        point = {};
        point["x"] = elem.time;
        point["y"] = elem.value;
        points.push(point);
    }

    var ctx = document.getElementById('myChart').getContext('2d');
    var chart = new Chart(ctx, {
        // The type of chart we want to create
        type: 'line',

        // The data for our dataset
        data: points,

        // Configuration options go here
        options: {
            responsive: false,

            scales: {
            x: {
                type: 'time',
            }
        }
        }
    });
Run Code Online (Sandbox Code Playgroud)

Lee*_*lee 9

安装所有 3 个必需的库确实可以使用脚本标签来完成,请参阅下面的实时示例。

您的数据未显示的原因是 Chart.js 不需要数据字段中的数据数组。在数据字段中,它期望一个对象至少有一个键,该对象datasets是一个数组和一个可选的标签数组,但由于您对数据使用对象格式,因此标签数组不是必需的。

每个数据集都有自己的图例标签,并且在数据集对象中,您可以在数据字段中配置数据数组。查看实例:

const options = {
  type: 'line',
  data: {
    datasets: [{
      label: '# of Votes',
      data: [{
        x: 1632664468243,
        y: 5
      }, {
        x: 1632664458143,
        y: 10
      }],
      borderColor: 'pink'
    }]
  },
  options: {
    scales: {
      x: {
        type: 'time'
      }
    }
  }
}

const ctx = document.getElementById('tt').getContext('2d');
new Chart(ctx, options);
Run Code Online (Sandbox Code Playgroud)
<canvas id="tt"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.5.1/chart.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.30.1/date_fns.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.bundle.min.js"></script>
Run Code Online (Sandbox Code Playgroud)