c3散点图 - 我怎样才能给出一个名字?

时间:2015-05-04 01:50:15

标签: d3.js c3

在c3散点图上,我可以给每个点一个x和y值,但我还需要给它们一个名字。

我传入的json数据看起来像这样:

[
  {
   name: 'Some Name 1',
   x: 209,
   y: 50
 }
 {
   name: 'Some Name 2',
   x: 100,
   y: 86
  }
]

有没有办法在鼠标悬停时获取该点的名称?我正在寻找一种方法来解释两个点具有相同的x和y值的可能性。

1 个答案:

答案 0 :(得分:1)

所以,如果你有这样的事情:

svg.selectAll("circle")
  .data(array)
  .enter().append("circle")
  .attr("x",function(d){return d.x;})
  .attr("y",function(d){return d.y;});

您可以添加以下内容:

.attr("title",function(d){return d.name;});

获得:

svg.selectAll("circle")
  .data(array)
  .enter().append("circle")
  .attr("x",function(d){return d.x;})
  .attr("y",function(d){return d.y;})
  .attr("title",function(d){return d.name;});

如果您的数据集有很多重叠值。我会将“name:”元素更改为数组。然后将任何重叠点组合成单个对象。 所以:

[
  {
   name: ['Some Name 1'],
   x: 209,
   y: 50
 },
 {
   name: ['Some Name 2'],
   x: 209,
   y: 50
  }
]

会变成:

[
  {
   name: ['Some Name 1','Some Name 2'],
   x: 209,
   y: 50
  }
]

你的d3代码将成为:

svg.selectAll("circle")
      .data(array)
      .enter().append("circle")
      .attr("x",function(d){return d.x;})
      .attr("y",function(d){return d.y;})
      .attr("title",function(d){
          var title = "";    
          title = title + d[0];          
          for(var i = 1; i < d.length; i++){
              title = title + ", " + d[i];              
          }
          return title;
       });