dc.js使用千位分隔符呈现标签

时间:2018-07-12 18:14:57

标签: d3.js dc.js

我的仪表板中几乎没有条形图,我在条形图的顶部显示标签。
我的用户要求为标签设置数千个分隔符。
原因是数字超过7位,并且每个小节都有更多。
是否有解决此功能的方法?
这是我的代码:

Chart
  .width(1700)
  .height(200) 
  .margins({top: 5, left: 40, right: 20, bottom: 30})
  .transitionDuration(1000)
  .dimension(dateDim)
  //.formatNumber(d3.format(","))
  .group(dateGroup)
  .renderLabel(true)
  .brushOn(true)
  .elasticY(true)
  //.centerBar(true)
  //.x(d3.time.scale().domain([minDate,maxDate])) 
  .yAxisLabel("Trades per day")
  .xAxisLabel("Days")
  .ordinalColors(['#215979'])
  .x(d3.time.scale().domain([minDate, d3.time.day.offset(maxDate, 1)]))
  .yAxis().tickFormat(d3.format('s'));
Chart.xUnits(function(){return 30;});
Chart
        .on("postRedraw", function(chart, filter){
          window.globalActiveFilters.SelectedTradeCount=chart.filters().join(",")
        });

2 个答案:

答案 0 :(得分:3)

栏顶部的标签由.label()控制。

对于条形图,默认行为被覆盖以使用堆积条形图的总Y值:

_chart.label(function (d) {
    return dc.utils.printSingleValue(d.y0 + d.y);
}, false);

(source link)

您可以指定自己的标签访问器,该访问器使用@REEE建议的d3.format,并为其提供总的堆叠值:

.label(d => d3.format(',')(d.y0 + d.y1))

stacked with comma'd labels

Example fiddle.

答案 1 :(得分:2)

使用d3格式,您可以在此处找到相关文档:https://github.com/d3/d3-format

示例用例(如上面的链接所示):

d3.format(",")(20000)
-> "20,000"
d3.format(",")(200000000)
-> "200,000,000"