Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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
Highcharts,如何根据值更改饼图中的数据标签距离_Charts_Highcharts - Fatal编程技术网

Highcharts,如何根据值更改饼图中的数据标签距离

Highcharts,如何根据值更改饼图中的数据标签距离,charts,highcharts,Charts,Highcharts,我正在使用Highcharts饼图。 图表中有几个大楔子,然后是几个小楔子。我可以使用距离将datalabel拉入楔子,或者将其放在饼外面,但我想要一个混合。我想让肥楔子在馅饼上贴标签,但我想让小楔子在外面贴标签。 我可以根据该值在formatter函数中更改标签的颜色(这使用span style=“color:“+color”)。我试着增加这个跨度的距离,但没有效果。 有人能帮我吗? 谢谢 Brita饼图中的数据标签距离不能覆盖每个数据点(请参阅源文件中pieSeries类中的translat

我正在使用Highcharts饼图。
图表中有几个大楔子,然后是几个小楔子。我可以使用距离将datalabel拉入楔子,或者将其放在饼外面,但我想要一个混合。我想让肥楔子在馅饼上贴标签,但我想让小楔子在外面贴标签。
我可以根据该值在formatter函数中更改标签的颜色(这使用span style=“color:“+color”)。我试着增加这个跨度的距离,但没有效果。 有人能帮我吗? 谢谢
Brita

饼图中的数据标签距离不能覆盖每个数据点(请参阅源文件中pieSeries类中的translate函数)

但是,它可以设置为每个系列。而且,你可以建立一个饼图,用一系列相同中心的序列,每个都占据一个楔子。这是一个多一点的工作。
这显示了如何覆盖饼图每个切片的半径:

同样的概念也适用于你。但不是更改每个系列的大小,而是有条件地更改每个系列的dataLabels距离:

$(函数(){
风险值数据=[{
名称:“一”,
y:5,
颜色:“红色”
}, {
姓名:"两",,
y:5,
颜色:“蓝色”
}, {
姓名:"三",,
y:30,
颜色:“紫色”
}, {
名称:"四",,
y:20,
颜色:“绿色”
}, {
姓名:"五",,
y:30,
颜色:“黑色”
}, {
姓名:"六",,
y:2,
颜色:“灰色”
}, {
名字:“七”,
y:1,,
颜色:“粉色”
}];
var total=data.map(函数(el){return el.y;})
.减少(功能(p,c){
返回p+c;
});
var newData=data.map(函数(el){
el.count=el.y;
标高y=标高y*100/总计;
返回el;
});
数据=新数据;
var start=-90;
var系列=[];
对于(变量i=0;i20?-30:30
},
startAngle:开始,
endAngle:结束,
数据:[数据[i]]
});
开始=结束;
};
控制台日志(系列);
$(“#容器”)。高图({
系列:系列
});
});
$(function() {
  var data = [{
    name: 'One',
    y: 5,
    color: 'red'
  }, {
    name: 'Two',
    y: 5,
    color: 'blue'
  }, {
    name: 'Three',
    y: 30,
    color: 'purple'
  }, {
    name: 'Four',
    y: 20,
    color: 'green'
  }, {
    name: 'Five',
    y: 30,
    color: 'black'
  }, {
    name: 'Six',
    y: 2,
    color: 'grey'
  }, {
    name: 'Seven',
    y: 1,
    color: 'pink'
  }];

  var total = data.map(function(el){return el.y;})
                                .reduce(function(p,c){
                    return p+c;
                  });
  var newData = data.map(function(el){
    el.count = el.y;
        el.y = el.y*100/total;
    return el;
  });
  data = newData;

  var start = -90;
  var series = [];
  for (var i = 0; i < data.length; i++) {
    var end = start + 360 * data[i].y / 100;
    series.push({
      name:"Count",
      type: 'pie',
      size: 200,
      dataLabels: {
        distance: data[i].y > 20 ? -30 : 30
      },
      startAngle: start,
      endAngle: end,
      data: [data[i]]
    });
    start = end;
  };
  console.log(series);
  $('#container').highcharts({
    series: series
  });
});