将标签添加到d3图表中的条形图 [英] Add labels to bar in d3 chart

查看:44
本文介绍了将标签添加到d3图表中的条形图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很想在我的图表中添加条形标签.我希望将阵列中的票证数量悬停在每个酒吧上.这是我的图表现在的样子.

这是我的代码:

  var数据= [{年":2013,门票":500},{年":2014,门票":1500}];//创建svgvar chart = d3.select('#chart').append('svg').style('background','#E7E0CB').attr('width',width + margin.left + margin.right).attr('height',height + margin.top + margin.bottom).append('g').attr('transform','translate('+ margin.left +','+ margin.right +')').style('background','#eee')chart.selectAll('rect').data(数据)//读取条形数据.进入().append('rect')//data创建一个矩形.style('fill','steelblue').attr('width',xScale.rangeBand()).attr('height',function(d){return yScale(d.tickets);}).attr('x',function(d,i){return xScale(d.year);}).attr('y',function(d){return height-yScale(d.tickets);})//在底部设置条形chart.selectAll("rect").data(数据).enter().append("text").attr("x",function(d){return xScale(d.tickets);}).attr("y",function(d){return yScale(d.tickets);}).text(function(d){return(d.tickets);}); 

解决方案

这应该为您解决问题:

  var text = chart.selectAll(.text").data(数据).进入().append("text").attr("class","text");var标签= text.attr("x",函数(d){返回xScale(d.year)+ xScale.rangeBand()/2;}).attr("y",函数(d){返回yScale(d.tickets);}).text(function(d){return d.tickets;}); 

这是最小的 FIDDLE ,上面有摘录,并对您发布的代码进行了一些小的更正.

I'm struck trying to add bar labels into my chart. I want the number of tickets from my array to hover over each bar. Here's what my chart looks like now.

Here's my code:

var data = [
        {"year":2013,"tickets": 500},
        {"year":2014,"tickets": 1500}];

    //creates svg
   var chart = d3.select('#chart').append('svg')
        .style('background', '#E7E0CB')
        .attr('width', width + margin.left + margin.right)
        .attr('height',height + margin.top + margin.bottom)
        .append('g')
        .attr('transform', 'translate('+ margin.left +','+ margin.right +')')
        .style('background','#eee')

chart.selectAll('rect')
            .data(data)//read bar data
            .enter()
            .append('rect')//data makes a rectangle
                    .style('fill','steelblue')
                    .attr('width', xScale.rangeBand())
                    .attr('height', function(d){return yScale(d.tickets);})
                    .attr('x', function(d, i) {return xScale(d.year);})       
                    .attr('y', function (d) {return height - yScale(d.tickets);}) //sets bars at the bottom

    chart.selectAll("rect")
            .data(data).enter()
            .append("text")                 
                .attr("x", function(d) { return xScale(d.tickets); })
                .attr("y", function(d) { return yScale(d.tickets); })
                .text(function(d) { return (d.tickets); });

解决方案

This should do the trick for you:

var text = chart.selectAll(".text")
    .data(data)
  .enter()
  .append("text")
    .attr("class","text");

var labels = text.attr("x", function (d) {
        return xScale(d.year) + xScale.rangeBand()/2;
    })
    .attr("y", function (d) {return yScale(d.tickets);})
    .text(function (d) { return d.tickets;});

Here is a minimal FIDDLE with the snippet above and some minor corrections to the code you posted.

这篇关于将标签添加到d3图表中的条形图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆