不要在 ChartJS 折线图中按条件画线

Do not draw line on condition in ChartJS line chart

我不想在触发条件时在两点之间画线。

我正在使用 chartjs 时间线图。

我的条件是当 y 减少 时不画线所以在这个例子中当它从 7 变为 1

{x:3.5*3600, y:7},
Do not draw line between these two points
{x:4*3600, y:1},

是否可以使用 chartjs 线时间图?

var canvas = document.getElementById('myChart');
var config = {
  "options": {
    "scales": {
      "xAxes": [
            {
              "type": 'time',
              "time": {
                "unit": 'minute',
                "unitStepSize": 60,

              },
              "distribution": 'linear',
              "bounds": 'ticks',
              "ticks": {
                "source": 'auto',
                "autoSkip": true,
                "stepSize": 10
              }
            }
          ],
    },
  },
  "data": {
   "labels": ['2016-04-18T00:00:00Z', '2016-04-18T23:59:00Z'],
    "datasets": [
    {
      "label": "line",
      "type": "line",
      "backgroundColor": "#00b",
      "borderColor": "#00b",
      //"yAxisID": "axis4",
      "borderWidth": 1,
      "fill": false,
      "data": [
{x:"2016-04-18T01:00:00Z", y:1},
{x:"2016-04-18T04:00:00Z", y:2},
{x:"2016-04-18T06:00:00Z", y:3},
{x:"2016-04-18T08:00:00Z", y:7},
{x:"2016-04-18T10:00:00Z", y:1},
{x:"2016-04-18T14:00:00Z", y:3},

]
    },
    ]
  },

};
var myBarChart = Chart.Line(canvas, config);
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.0/Chart.bundle.min.js"></script>
<canvas id="myChart" width="400" height="200"></canvas>

更新 我试图在两个项目之间添加 {x:null,y:null}null 但我收到此错误

Error: 0 and 1461023970000 are too far apart with stepSize of 60 minute

在我的选择中,我有:

"data": [
  {x:"2016-04-18T01:00:00Z", y:1},
  {x:"2016-04-18T04:00:00Z", y:2},
  {x:"2016-04-18T06:00:00Z", y:3},
  {x:"2016-04-18T08:00:00Z", y:7},
  {x:null,y:null},
  {x:"2016-04-18T10:00:00Z", y:1},
  {x:"2016-04-18T14:00:00Z", y:3},
]

...

xAxes: [
    {
      type: 'time',
      time: {
        unit: 'minute',
        unitStepSize: 60,
        parser: function(date) {
          return moment(date).toLocaleString();
        }
      },
      distribution: 'linear',
      bounds: 'ticks',
      ticks: {
        source: 'auto',
        autoSkip: true,
        stepSize: 10
      }
    }
  ],

这就像 chartjs 将 null 视为一个很大的值

将 y 设置为 null,同时仍然定义 x 坐标。

"data": [
  {x:"2016-04-18T01:00:00Z", y:1},
  {x:"2016-04-18T04:00:00Z", y:2},
  {x:"2016-04-18T06:00:00Z", y:3},
  {x:"2016-04-18T08:00:00Z", y:7},
  {x:"2016-04-18T08:00:01Z", y:null},
  {x:"2016-04-18T10:00:00Z", y:1},
  {x:"2016-04-18T14:00:00Z", y:3},
]

如 Chart.js 文档中所述(参见 spanGaps),如果 spanGaps 是假的(默认情况下),具有 NaN 数据的点将创建中断这条线。

所以,诀窍是插入一个空点,就像您尝试的那样。这个空点必须有时间戳,两点之间的时间戳定义了行中的"hole":

"data": [
  {x:"2016-04-18T01:00:00Z", y:1},
  {x:"2016-04-18T04:00:00Z", y:2},
  {x:"2016-04-18T06:00:00Z", y:3},
  {x:"2016-04-18T08:00:00Z", y:7},
  {x:"2016-04-18T08:00:00Z", y:null}, // or NaN
  {x:"2016-04-18T10:00:00Z", y:1},
  {x:"2016-04-18T14:00:00Z", y:3},
]

以这个 fiddle 为例:https://jsfiddle.net/t1s54gdh/