强制 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>
使用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>