【发布时间】:2014-02-25 18:29:22
【问题描述】:
正如标题所说,我无法在我的 asp.NET 页面上的“MainContent”占位符中显示图表。如果我将选择从“MainContent”更改为“body”,则图表会显示在页面底部。
代码sn-p:
var w = 960, h = 500, r = 30, 填充 = d3.scale.category20();
var force = d3.layout.force() .charge(-120) .linkDistance(60) .size([w, h]); var svg = d3.select("body").append("svg:svg") .attr("width", w) .attr("height", h); d3.json("graph.json", function (json) { var link = svg.selectAll("line") .data(json.links) .enter().append("svg:line"); var node = svg.selectAll("g myCircleText") .data(json.nodes) var elemEnter = node.enter() .append("g") elemEnter.append("text") //.attr("dx", function (d) { return -20 }) .text(function (d) { return d.name }) var circle = elemEnter.append("circle") .attr("r", r) .style("fill", function (d) { return fill(d.group); }) .style("stroke", function (d) { return d3.rgb(fill(d.group)).darker(); }) .call(force.drag); force .nodes(json.nodes) .links(json.links) .on("tick", tick) .start(); function tick(e) { // Push sources up and targets down to form a weak tree. var k = 6 * e.alpha; json.links.forEach(function (d, i) { d.source.y -= k; d.target.y += k; }); circle.attr("cx", function (d) { return d.x; }) .attr("cy", function (d) { return d.y; }); link.attr("x1", function (d) { return d.source.x; }) .attr("y1", function (d) { return d.source.y; }) .attr("x2", function (d) { return d.target.x; }) .attr("y2", function (d) { return d.target.y; }); } });`
我也无法在每个节点上显示文本,我已经做了很多搜索,但还没有解决任何一个问题。
更新: 我设法让文本显示在我的图表中。但是,文本不会显示在圆圈内,而是显示在 svg 容器的左上角。我已经更新了代码 sn-p 以反映这一点。
更新 2: 我现在将图表显示在正确的位置。解决方案很简单,只需将脚本放在 div 中,然后在脚本中选择所述 div。我还没有弄清楚如何在圆圈内显示文字。
【问题讨论】:
-
尝试为你正在做的事情提供一个最小的节点工作代码。还请告诉我们您为什么认为这是与 ASP 的链接(不应该,D3.js 纯粹是前端)
-
上面的代码可以工作,但不显示图表,除非我将选定的 d3 区域更改为“body”。我不确定问题是否与 asp 相关,但我看不出它不会显示在内容占位符中的任何原因。
-
你能给我们看看ASP生成的HTML吗?
-
它是一个空页面,除了从 site.master 继承的 3 个占位符(我还没有添加)。你还要我复制html吗?
标签: c# javascript asp.net svg d3.js