带有事件的ChartJS时间线图

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

enter image description here

我正在尝试构建一个与屏幕截图中的图类似的图:这是显示事件的时间线。但是我需要事件之间的间隔以对应于实际的时间流逝,因此我认为我无法将事件提供为X轴...所以我真的不知道我应该看什么。

chart.js
1个回答
0
投票

首先,您需要将xAxis定义为time cartesian axis。然后,您可以通过包含dataindividual points属性的对象将数据集的x定义为y

[请注意,Chart.js在内部将Moment.js用于time axis的功能。因此,您应该使用在单个文件中包含Moment.js的Chart.js的bundled version

const img = new Image(16, 16);
img.src = 'https://i.stack.imgur.com/Q94Tt.png'; 

var ctx = document.getElementById('chart').getContext('2d');
var myChart = new Chart(ctx, {
  type: 'line',
  data: {
    datasets: [{
      data: [
        { x: "2020-03-22", y: 0 },
        { x: "2020-04-01", y: 0 },
        { x: "2020-04-02", y: 0 },
        { x: "2020-04-03", y: 0 },
        { x: "2020-04-08", y: 0 },
        { x: "2020-04-12", y: 0 },
        { x: "2020-04-15", y: 0 }
      ],
      pointStyle: img,
      borderWidth: 1
    }]
  },
  options: {
    legend: {
      display: false
    },
    scales: {
      yAxes: [{
        ticks: {
          display: false,
        },        
        gridLines: {
          display: false
        }
      }],
      xAxes: [{
        type: 'time',
        time: {
          unit: 'day',
          tooltipFormat: 'MMM DD'
        },
        gridLines: {
          display:false
        }
      }]
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.bundle.min.js"></script>
<canvas id="chart" height="28"></canvas>
© www.soinside.com 2019 - 2024. All rights reserved.