【发布时间】:2016-09-06 21:17:34
【问题描述】:
-
我在 js 文件中有 json 对象(例如 MyFirstMashup.js),我 已将气泡图的脚本复制到同一个 js 文件中。在所有 网络上提供的示例,他们使用了 json 文件,例如。 flare.json、xyz.tsv 等。我不能像现在这样拥有这个文件 在 MyFirstMashup.js 文件中动态获取数据。相反我 已在我现有的 js 代码下方附加了气泡图代码。但 不幸的是,气泡图代码并没有特别适用于 data.json() 部分。我想我不必使用它,因为我已经 有 JSON 对象。如果不是,那么需要在 气泡图代码。带有气泡图的 MyFirstMashup.js 部分和json对象**(var jsonObj)**是---
var jsonStr = JSON.stringify(matrix);
var jsonObj = JSON.parse(jsonStr); //json对象var bubble = d3.layout.pack() .sort(null) .size([diameter, diameter]) .padding(1.5); var svg = d3.select("body").append("svg") .attr("width", diameter) .attr("height", diameter) .attr("class", "bubble"); d3.json("flare.json", function(error, root) { //hw to replace flare.json if (error) throw error; //with jsonObj(any json object) var node = svg.selectAll(".node") .data(bubble.nodes(classes(root)) .filter(function(d) { return !d.children; })) .enter().append("g") .attr("class", "node") .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; }); node.append("title") .text(function(d) { return d.className + ": " + format(d.value); }); node.append("circle") .attr("r", function(d) { return d.r; }) .style("fill", function(d) { return color(d.packageName); }); node.append("text") .attr("dy", ".3em") .style("text-anchor", "middle") .text(function(d) { return d.className.substring(0, d.r / 3); }); }); // Returns a flattened hierarchy containing all leaf nodes under the root. function classes(root) { var classes = []; function recurse(name, node) { if (node.children) node.children.forEach(function(child) { recurse(node.name, child); }); else classes.push({packageName: name, className: node.name, value: node.size}); } recurse(null, root); return {children: classes}; } d3.select(self.frameElement).style("height", diameter + "px");
【问题讨论】:
标签: javascript html json d3.js bubble-chart