2017-10-15 52 views
-1

我試過在選項中使用showValues:true,但沒有運氣。 這是圖書館http://krispo.github.io/angular-nvd3/#/ showValues適用於離散條形圖,但不適用於多條形圖。 This is the expected output如何在nvd3角度多邊形圖表中的每個條的頂部顯示條的值?

+0

這不包括足夠的信息,以便能夠很好地解決您的問題。請閱讀指南,正確格式化您的問題:https://stackoverflow.com/help/how-to-ask –

+0

嘗試閱讀此問題https://stackoverflow.com/questions/13203404/nvd3-stacked-bar-chart -with-discrete-values –

+0

您需要使用tickFormat格式化軸的值 –

回答

1

此代碼適用於我。配置圖表選項 後);

1)調用一個函數(setOnTopLabel()。

2)將此函數添加到您的js代碼中。

function setOnTopLabel() { 
      $timeout(function() { 
       debugger; 
       d3.selectAll('.nv-multibar .nv-group').each(function (group) { 
        debugger; 
        var g = d3.select(this); 
        // Remove previous labels if there is any 
        g.selectAll('text').remove(); 
        g.selectAll('.nv-bar').each(function (bar) { 
         var b = d3.select(this); 
         var barWidth = b.attr('width'); 
         var barHeight = b.attr('height'); 

         g.append('text') 
           // Transforms shift the origin point then the x and y of the bar 
           // is altered by this transform. In order to align the labels 
           // we need to apply this transform to those. 
           .attr('transform', b.attr('transform')) 
           .text(function() { 
            // Two decimals format 
            return parseFloat(bar.y); 
           }) 
           .attr('y', function() { 
            // Center label vertically 
            var height = this.getBBox().height; 
            return parseFloat(b.attr('y')) - 10; // 10 is the label's magin from the bar 
           }) 
           .attr('x', function() { 
            // Center label horizontally 
            var width = this.getBBox().width; 
            return parseFloat(b.attr('x')) + (parseFloat(barWidth)/2) - (width/2); 
           }).style("fill", "black").style('stroke-width', "10").style('fill-opacity', "100"); 
        }); 
       }); 
      }, 1000); 
     } 
相關問題