所以我一直在拿起D3.js来查看我的一些数据,我需要一些帮助来理解为什么会发生某些事情。
我从this example on the D3 site获取代码,并将其修改为从平面CSV而不是拼合的JSON文件中读取。这是它的样子:
d3.csv("top-brands.csv", function(csvData) {
var data = { name: "brand", children: csvData };
var node = svg.data([data]).selectAll(".node")
.data(pack.nodes)
.enter().append("g")
.attr("class", "node")
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
node.append("title")
.text(function(d) { return d.brand; });
node.append("circle")
.attr("r", function(d) { return d.r; })
.style("fill", function(d) { return color(d.brand); });
node.append("text")
.attr("dy", ".3em")
.style("text-anchor", "middle")
.text(function(d) { return d.brand; });
});
它似乎工作得很好,从某种意义上说,我的气泡都得到了正确的数据,但有两个不断出现的问题不断出现:
它不断绘制一个包围其他圆圈的大圆圈。它似乎与画布允许的一样大(480px×480px),但我不知道如何让它消失。是因为我的数据处理方式?
如果我尝试用" d.brand"无论如何,它会告诉我d.brand是未定义的。如果长度太长,D3网站上的示例将获取标题并获取子字符串,但我似乎无法做到这一点。是因为我提取数据的方式吗?
感谢任何帮助!我无法真正提供示例CSV,因为它是专有数据,但它只有三列:品牌,数量和比例,它是一个字符串,一个int和一个浮点数(百分比)以该顺序。我认为虚拟数据可以正常工作。
非常感谢!