Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dc.js,防止饼图外部标签重叠_Dc.js_Dc.leaflet.js - Fatal编程技术网

dc.js,防止饼图外部标签重叠

dc.js,防止饼图外部标签重叠,dc.js,dc.leaflet.js,Dc.js,Dc.leaflet.js,对于组值非常接近的情况,我无法正确显示标签,因此标签往往会重叠。我已经试过了。这里还能做些什么?饼图的代码为: var types = xf.dimension(function(d) { return d.txntype; }); var typesSum = types.group().reduceSum(function(d) { return d.txnamount; }); var pieChart = dc.pieChart("#pie-row-chart",groupn

对于组值非常接近的情况,我无法正确显示标签,因此标签往往会重叠。我已经试过了。这里还能做些什么?饼图的代码为:

  var types = xf.dimension(function(d) { return d.txntype; });
  var typesSum = types.group().reduceSum(function(d) { return d.txnamount; });
  var pieChart = dc.pieChart("#pie-row-chart",groupname)
      .width(370)
      .height(309)
      .slicesCap(4)
      .innerRadius(70)
      .colors(d3.scaleOrdinal(d3.schemeSet1))
      .drawPaths(true)
      .externalRadiusPadding(60)
      .minAngleForLabel(5)
      .externalLabels(40)
      .dimension(types)
      .group(typesSum)
      .title(function(d) {
          return d.key + ': ' +  Math.round((d.value * 100)/100) + ' BDT';
      })
      .on('pretransition', function(pieChart) {
          pieChart.selectAll('text.pie-slice').text(function(d) {
              return d.data.key + ' ' + dc.utils.printSingleValue((d.endAngle - d.startAngle) / (2*Math.PI) * 100) + '%';
          })
      });

我怀疑发生的情况是,当没有数据时,图表将标签设置为空字符串,然后您将其设置回
预转换处理程序中

图表显示

function sliceTooSmall (d) {
    var angle = (d.endAngle - d.startAngle);
    return isNaN(angle) || angle < _minAngleForLabel;
}

如果图表决定不显示文本,您可以在
pretransition
处理程序中使用
d3进行检测。选择(this).text()


一旦您这样做,您可能需要将
minAngleForLabel
设置得更低一些,因为它是以弧度指定的。

有关图表库的问题,请使用[dc.js]标记。[dc]是一个经典的unix计算器实用程序。嗯,该设置实际上应该删除所有标签(!),因为
minAngleForLabel
是以弧度指定的。。。我错过了这个问题是因为标签错了,你明白了吗?你是对的,戈登。但是标签还在那里!不幸的是,我还没有解决它。我不明白为什么minAngleForLabel不起作用,解决了!谢谢你,戈登!谢谢戈登!添加“d3.select(this).text()&&”以返回已解决的问题。
    labels
        .text(function (d) {
            var data = d.data;
            if ((sliceHasNoData(data) || sliceTooSmall(d)) && !isSelectedSlice(d)) {
                return '';
            }
            return _chart.label()(d.data);
    });
  .on('pretransition', function(pieChart) {
      pieChart.selectAll('text.pie-slice').text(function(d) {
          return d3.select(this).text() && (d.data.key + ' ' + 
            dc.utils.printSingleValue((d.endAngle - d.startAngle) /
            (2*Math.PI) * 100) + '%');
      })
  });