首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将标签添加到c3.js散点图中?

如何将标签添加到c3.js散点图中?
EN

Stack Overflow用户
提问于 2015-07-20 10:24:03
回答 2查看 3.2K关注 0票数 2

是否可以在c3.js中添加标签,以便在c3.js中散布点,如这个google图表示例所示?

https://google-developers.appspot.com/chart/interactive/docs/gallery/bubblechart#javascript

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-20 12:41:45

c3目前不支持这一点-- https://github.com/masayuki0812/c3/issues/481。但您可以轻松地添加功能-只需循环遍历图表系列和点,并在必要时添加标签。

代码语言:javascript
复制
var labels = [
    ['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH'],
    ['ZA', 'ZB', 'ZC', 'ZD', 'ZE', 'ZF', 'ZG', 'ZH']
];
// series
var series = chart.internal.main
                .selectAll('.' + c3.chart.internal.fn.CLASS.circles)[0];
// text layers
var texts = chart.internal.main
                .selectAll('.' + c3.chart.internal.fn.CLASS.chartTexts)
                .selectAll('.' + c3.chart.internal.fn.CLASS.chartText)[0]
series.forEach(function (series, i) {
    var points = d3.select(series).selectAll('.' + c3.chart.internal.fn.CLASS.circle)[0]
    points.forEach(function (point, j) {
        d3.select(texts[i])
            .append('text')
            .attr('text-anchor', 'middle')
            .attr('dy', '0.3em')
            .attr('x', d3.select(point).attr('cx'))
            .attr('y', d3.select(point).attr('cy'))
            .text(labels[i][j])
    })
});

小提琴- http://jsfiddle.net/6phuuans/

票数 5
EN

Stack Overflow用户

发布于 2018-01-07 17:40:33

目前,C3.js没有为我们提供将标签添加到散点图中的选项。但是,可以使用以下方法添加响应性数据标签:

  1. 在图表呈现后(在图表的“on呈现”属性中),标识数据点(标记),并添加从相关圆圈中选择的x和y坐标标记,作为标记兄弟。

代码片段:

代码语言:javascript
复制
onrendered: function(){
  // get the parent of the the <circles> to add <text as siblings>
  var g = d3.selectAll('.c3-circles');
  //Get all circle tags
  var circles = d3.selectAll('circle')[0];
  //go to each circle and add a text label for it
  for(var i = 0; i < circles.length; i++){
    //fetch x-coordinate
    var x = $(circles[i])[0].cx;
    //fetch y-coordinate
    var y = $(circles[i])[0].cy;

    //create and append the text tag
    g.append('text')
      .attr('y', y.baseVal.value - 15)  // (-15) places the tag above the circle, adjust it according to your need
      .attr('x', x.baseVal.value)
      .attr('text-anchor', 'middle')
      .attr('class', 'c3-text c3-text-'+i)
      .text(data[i].<data point key>) // the text that needs to be added can be hard coded or fetched for the original data.
      //Since I am using a JSON to plot the data, I am referencing it and using the key of the value to be shown.

  }

}
  1. 这将添加标签,但在调整大小时,将绘制多个数据标签。要处理这个问题,在调整图表大小时,我们必须删除以前的数据标签(在图表的"onresize“属性中)。

代码片段:

代码语言:javascript
复制
 onresize: function () {
              $('.c3-shapes.c3-circles text').remove();
           }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31514097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档