我尝试使用0值的d3漏斗图无法正常工作。我启用了dynamicSlope选项才是真正的漏斗图。
查看我的示例:
http://jsfiddle.net/3x265bLj/7/
我添加了六个值l0,l1,l2 .... L6和l3的值为0.一旦启用了dynamicSlope选项,则漏斗图仅显示L0,L1,L2的值,但需要L3,L4,L5。 / p>
const data = [
['l0', 13],
['l1', 7],
['l2', 12],
['l3', 0],
['l4', 8],
['l5', 3]
];
const options = {
chart: {
width: 200,
height: 450,
bottomWidth: 1 / 2,
bottomPinch: 1,
inverted: false,
horizontal: false,
animate: 0,
curve: {
enabled: true,
height: 20,
shade: -0.4
}
},
block: {
dynamicSlope: true,
dynamicHeight: true,
highlight: true
}
};
const chart = new D3Funnel('#funnel');
chart.draw(data, options);
控制台问题:
Error: <path> attribute d: Expected number, "MNaN,562.5 LNaN,5…".
答案 0 :(得分:0)
Error: <path> attribute d: Expected number, "MNaN,562.5 LNaN,5…".
均值
该函数尝试将数据转换为高度格式,但是输入0表示高度为0,该函数拒绝您。
绘制0数据的目的是什么? axample,如果函数可以做到 它的数据不会显示在图表上,因为它的高度为0, 我正确吗?
thare是2个解决问题的方法,首先在绘制之前将数据值更改为0.01
var data = [
['l0', 13],
['l1', 7],
['l2', 12],
['l3', 0],
['l4', 8],
['l5', 3]
];
var newdata = data.map(function (d,i){
var new_d = d
if (new_d[1] == 0){
new_d[1] = 0.01
}
return new_d
})
chart.draw(newdata, options);
第二,在绘制之前添加过滤器功能
var data = [
['l0', 13],
['l1', 7],
['l2', 12],
['l3', 0],
['l4', 8],
['l5', 3]
];
var newdata = data.filter(function (d,i){
return d[1] !== 0
})
chart.draw(newdata, options);