最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - d3.js: How to add labels to scatter points on graph - Stack Overflow

programmeradmin3浏览0评论

I am trying to add labels to the scatter points on this graph: .html

I thought that modifying this code a little bit would work, but it didn't:

svg.selectAll(".dot")
  .append("text")
  .text("fooLabelsOfScatterPoints");

I am trying to add labels to the scatter points on this graph: http://bost.ocks.org/mike/d3/workshop/dot-chart.html

I thought that modifying this code a little bit would work, but it didn't:

svg.selectAll(".dot")
  .append("text")
  .text("fooLabelsOfScatterPoints");
Share Improve this question edited Sep 16, 2012 at 20:20 paxRoman 2,0623 gold badges19 silver badges32 bronze badges asked Sep 4, 2012 at 15:43 lanadelreylanadelrey 4431 gold badge4 silver badges11 bronze badges 2
  • 3 Have you looked at this example: mbostock.github.com/d3/ex/bubble.html, and it's source: mbostock.github.com/d3/ex/bubble.js – Mike Robinson Commented Sep 4, 2012 at 19:26
  • Mike, from looking at your example, I think I have to append <text> tags onto <g> tags, as opposed to appending <text> tags onto <circle> tags. I'll try it out now. – lanadelrey Commented Sep 4, 2012 at 19:41
Add a comment  | 

2 Answers 2

Reset to default 16

Mike Robinson, your example helped.

For those who are wondering, here is what I did:

I removed:

svg.selectAll(".dot")
  .data(data)
  .enter().append("circle")
  .attr("class", "dot")
  .attr("cx", function(d) { return x(d.x); })
  .attr("cy", function(d) { return y(d.y); })
  .attr("r", 12);

and added:

var node = svg.selectAll("g")
                .data(data)
                .enter()
                .append("g");

node.append("circle")
  .attr("class", "dot")
  .attr("cx", function(d) { return x(d.x); })
  .attr("cy", function(d) { return y(d.y); })
  .attr("r", 12);

node.append("text")
  .attr("x", function(d) { return x(d.x); })
  .attr("y", function(d) { return y(d.y); })
  .text("fooLabelsOfScatterPoints");

I appended "text" tags onto "g" tags, as opposed to appending "text" tags onto "circle" tags.

When I tried the node solution, some of my data disappeared (?), so I just added a new class called "dodo" which worked for me:

svg.selectAll(".dot")
  .data(data)
 .enter().append("circle")
  .attr("class", "dot")
  .attr("r", 3.5)
  .attr("cx", function(d) { return x(d.time); })
  .attr("cy", function(d) { return y(d.place); })
  .style("fill", function(d) { return color(d.species); });

svg.selectAll(".dodo")
  .data(data)
 .enter().append("text")
  .attr("class", "dodo")
  .attr("x", function(d) { return x(d.time); })
  .attr("y", function(d) { return y(d.place); })
  .attr("dx", ".71em")
  .attr("dy", ".35em")
  .text(function(d) { return d.name;});
发布评论

评论列表(0)

  1. 暂无评论