根据d3.js

时间:2015-06-08 19:17:21

标签: javascript d3.js chord-diagram

首次使用者,请原谅协议中的任何意外违规行为。我试图采用形成D3生成的和弦图的外环的弧,并将它们变成各种各样的条形图,每个组'弧具有不同的外半径。我没有在D3文档中发现任何东西,这表明这是不可能的,但我还没有找到解决方案。棘手的部分似乎是获得一个函数来执行和检索我存储的csv文件中的相关数字,并相应地改变弧的外半径。这是我到目前为止所做的事情(修改自"安德鲁RP&#39的和弦示例"):

d3.csv('teams.csv', function(cities) {
d3.json('matrix1.json', function(matrix) {

// Compute the chord layout.
layout.matrix(matrix);

// Add a group per neighborhood.
var group = svg.selectAll(".group")
.data(layout.groups)
.enter().append("g")
.attr("class", "group")
.on("mouseover", mouseover);


// Add the group arc.
var groupPath = group.append("path")
.attr("id", function(d, i) { return "group" + i; })
.attr("d", d3.svg.arc().innerRadius(innerRadius).outerRadius(innerRadius + function(d, i) {return cities[i].conservation;}))
.style("fill", function(d, i) { return cities[i].color; });

但是当我运行该程序时,它不会显示外部弧并在浏览器的开发人员窗格中提供错误消息,说它无法解析" d",并显示它在执行outerRadius(...)中的函数时遇到问题。 任何帮助或建议将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:3)

这段代码不正确:

.outerRadius(innerRadius + function(d, i) {return cities[i].conservation;})

您正在尝试对innerRadius + reference to function求和。 function(d, i) {return cities[i].conservation;}只是对此函数的指针引用,而不是函数调用。此函数不是直接调用的,它只作为参数传递给后来执行它的outerRadius。 在您的示例中,名为innerRadius + function(d, i) {return cities[i].conservation;}。它们是不兼容的类型(innerRadius可能是整数和函数(...是函数类型)所以有一个名为.toString()的方法,你将字符串"100function (d, i) {return cities[i].conservation;}"传递给.outerRadius,其中100是{的值{1}}变量。 代码应该是:

innerRadius