【发布时间】:2013-04-20 13:26:57
【问题描述】:
【问题讨论】:
标签: javascript d3.js nvd3.js
【问题讨论】:
标签: javascript d3.js nvd3.js
How to display values in Stacked Multi-bar chart - nvd3 Graphs 的副本
您可以在https://gist.github.com/topicus/217444acb4204f364e46 自行实施修复
编辑:如果 github 链接被删除,则复制代码:
// You need to apply this once all the animations are already finished. Otherwise labels will be placed wrongly.
d3.selectAll('.nv-multibar .nv-group').each(function(group){
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).toFixed(2);
})
.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);
})
.attr('class', 'bar-values');
});
});
【讨论】:
显然这还不存在。有一个问题 (https://github.com/novus/nvd3/issues/150) 已关闭,因为这(显然)难以实施。
【讨论】:
【讨论】: