是否可以在不提供空数组的情况下在 billboard.js 时间序列图表上添加一个点?

Is it possible to add one point on billboard.js timeseries chart without providing an array of nulls?

我正在尝试在时间序列图表上添加一些额外的点。 我可以通过提供一个额外的数据系列来做到这一点,在第一个刻度中填充空值。

我想知道我们是否可以做如下事情:

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/billboard.js/dist/billboard.min.css" />
  <script src="https://cdn.jsdelivr.net/npm/billboard.js/dist/billboard.pkgd.min.js"></script>
  <title>JS Bin</title>
</head>

<body>
 <div id="chart"></div>
  <script>
  bb.generate({
    bindto: "#chart",
    size: {
      width: 500,
      height: 250
    },
    data: {
      x: "x",
      columns: [
        ["x", "2013-01-01", "2013-01-02", "2013-01-03", "2013-01-04", "2013-01-05", "2013-01-06"],
        ["data1", 30, 200, 100, 400, 150, 250],
        ["data2", 130, 340, 200, 500, 250, 350],
        ["EXTRA", null, null, 400, null, null, null],
        ["EXTRA2", null, 410], //can omit the nulls after the value
      ]
    },
    axis: {
      x: {
        type: "timeseries",
        tick: {
          format: "%Y-%m-%d"
        }
      }
    },
  });
  </script>
</body>

</html>

如果你需要为特定的x轴加载一些数据,你可以通过.load() API。

步骤是:

  • 1) 正常生成图表
  • 2) 对指定的x轴数据使用.load()

    chart.load({ 列: [ ["x", "2013-01-03"], ["EXTRA", 400] ] });

NOTE: There's a bug not showing tooltip in correct x axis. This issue was already fixed and will be out in the next release. Meanwhile, you can use the fixed build with the nightly build.

查看演示代码段:

 var chart = bb.generate({
  bindto: "#chart",
  size: {
    width: 500,
    height: 250
  },
  data: {
    x: "x",
    columns: [
      ["x", "2013-01-01", "2013-01-02", "2013-01-03", "2013-01-04", "2013-01-05", "2013-01-06"],
      ["data1", 30, 200, 100, 400, 150, 250],
      ["data2", 130, 340, 200, 500, 250, 350]
    ]
  },
  axis: {
    x: {
      type: "timeseries",
      tick: {
        format: "%Y-%m-%d"
      }
    }
  },
});
  
chart.load({
  columns: [
   ["x", "2013-01-03"],
   ["EXTRA", 400]
  ]
});

chart.load({
  columns: [
   ["x", "2013-01-02"],
   ["EXTRA2", 410]
  ]
});
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/billboard.js/dist/billboard.min.css" />
  <script src="https://cdn.jsdelivr.net/npm/billboard.js/dist/billboard.pkgd.min.js"></script>
  <title>JS Bin</title>
</head>
<body>
    <div id="chart"></div>
</body>
</html>