强制 billboard.js 样条图呈现所有线条

Force billboard.js spline chart to render all lines

使用billboard.js创建样条图时,如果数据系列有一些"steep enough"值,创建的图表会切断一些线。它将始终显示图表中的所有点,但不是所有连接样条线。

设置 top/bottom 填充会给行一些额外的 space,但这不够可靠。

想知道有没有办法保证所有的线都在样条图的可见区域

options = {
  data: {
    columns: [
      ["data1", -30, 255, 255, -50, -30, 255, 255, -50, -30, 255, 255, -50, 150, 250, 240, 20, 150, 250],
      ["data2", 130, 100, 140, 35, 110, 50, 130, 100, 140, 35, 110, 50, 130, 100, 140, 35, 110, 50]
    ],
    type: "spline",
  },
  size: {
    height: 240,
    width: 480,
  },
};

withpadding= {
  y: {
    padding: {
      top:50,
    },
  },
};

options.bindto = "#chart";
bb.generate(options);
options.bindto = "#chart2";
options.axis = withpadding;
bb.generate(options);
<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/billboard.js/dist/billboard.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/billboard.js/dist/billboard.min.css">
<div id="chart"></div>
<div id="chart2"></div>

您可以为此使用 clipPath 选项。只需设置 clipPath=false.

bb.generate({
    data: {
  columns: [
   ["data1", -30, 255, 255, -50, -30, 255, 255, -50, -30, 255, 255, -50, 150, 250, 240, 20, 150, 250],
   ["data2", 130, 100, 140, 35, 110, 50, 130, 100, 140, 35, 110, 50, 130, 100, 140, 35, 110, 50]
  ],
  type: "spline",
 },
 size: {
  height: 240,
  width: 480,
 },
 clipPath: false
});
<!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>billboard.js</title>
</head>
<body>
  <div id="chart"></div>
</body>
</html>