我正在尝试创建一个Qlikview扩展对象来构建D3树图表。 下面是D3中树形图的链接 https://gist.github.com/mbostock/2949981
因此,我能够读取父节点和子节点,并且还能够在Qlikview对象窗口上绘制节点(点)。
但是,当在d3.v2.js / d3.js / d3.v3.min.js中调用d3.svg.diagonal()函数时,代码在生成链接时抛出错误
以下是我的脚本会抛出错误的代码段。
var diagonal = d3.svg.diagonal().projection(function(d) { return [d.y, d.x]; });
// Create the link lines.
svg.selectAll(".link")
.data(links)
.enter().append("path")
.attr("class", "link")
.attr("d", diagonal);
错误:"无法获取属性的值':对象为null或未定义
下面是d3.v2.js中的对角线函数,其中第3行引发了错误
d3.svg.diagonal = function() {
function diagonal(d, i) {
var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {
x: p0.x,
y: m
}, {
x: p3.x,
y: m
}, p3 ];
p = p.map(projection);
return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3];
}
var source = d3_svg_chordSource, target = d3_svg_chordTarget, projection = d3_svg_diagonalProjection;
diagonal.source = function(x) {
if (!arguments.length) return source;
source = d3_functor(x);
return diagonal;
};
diagonal.target = function(x) {
if (!arguments.length) return target;
target = d3_functor(x);
return diagonal;
};
diagonal.projection = function(x) {
if (!arguments.length) return projection;
projection = x;
return diagonal;
};
return diagonal;
};
请帮助
这是我使用过的数据。它是一个简单的.csv文件,没有x,y值:
source,target
flare,animate
flare,analytics
analytics,cluster
analytics,graph
animate,sequence
animate,transition
animate,interpolate
cluster,agglomerativeCluster
cluster,hierarchicalCluster
interpolate,arrayInterpolator
interpolate,colorInterpolator
interpolate,dateInterpolator