Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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
Javascript 为不带切片的饼图生成datalabels格式化程序_Javascript_Highcharts - Fatal编程技术网

Javascript 为不带切片的饼图生成datalabels格式化程序

Javascript 为不带切片的饼图生成datalabels格式化程序,javascript,highcharts,Javascript,Highcharts,我尝试用高图表构建饼图,但是数据标签和格式化程序有问题 我有一个json: [ {"name":"libelle","data":["TROUILLE","BEARN"]}, {"name":"Nombre","data":[12,24]} ] 我想要标签: BEARN : 66,66 % 所以,我试着写下: dataLabels: {enabled: true, formatter: function() {return '<b>'+ this.y +'</b>:

我尝试用高图表构建饼图,但是数据标签和格式化程序有问题

我有一个json

[
{"name":"libelle","data":["TROUILLE","BEARN"]},
{"name":"Nombre","data":[12,24]}
]
我想要标签:

BEARN : 66,66 %
所以,我试着写下:

dataLabels: {enabled: true,
formatter: function() {return '<b>'+ this.y +'</b>: '+ Highcharts.numberFormat(this.percentage, 2) +' %';}}
我对百分比没有问题,但我在访问libelle系列时遇到了问题

我该怎么做

谢谢你的帮助


Geo-x

您需要合并JSON中的数据,或者更改JSON。因此,有两种可能的解决方案:

1) 将JSON更改为以下格式:

[{
  "y":12,
  "name":"TROUILLE"
}, { 
  "y":24,
  "name":"BEARN"
}]
2) 在JS中合并数据:

var数据=[],
json=[{
“姓名”:“诽谤”,
“数据”:[“TROUILLE”、“BEARN”]
}, {
“名称”:“名称”,
“数据”:[12,24]
}];
$.each(json[1]。数据,函数(i,e){//在“Nombre”上循环
数据推送({
y:e,
名称:json[0]。数据[i]
});
});
$(“#容器”)。高图({
打印选项:{
馅饼:{
数据标签:{
启用:对,
格式化程序:函数(){
返回“+this.key+”:“+Highcharts.numberFormat(this.percentage,2)+'%”;
}
}
}
},
系列:[{
键入“pie”,
名称:“浏览器共享”,
数据:数据
}]
});

感谢您对Pawel的帮助。问题是,这是我第三次更改json格式,因为我一直对此有问题,无论是标签还是图形。上次我在本教程中使用了json格式:[link]()。所以你确认我不可能用这种json格式来获取libelle的值?好吧,但你指的是xAxis(类似于线性轴)的教程。同时,您正在使用饼图,饼图中没有xAxis;)另外,正如我上面所说的,您不必更改格式,只需使用第二种解决方案。是的,我认为这是一个好主意!我理解你说的,但我希望所有图形只有一种json格式:-)。非常感谢你,祝你今天愉快!
[{
  "y":12,
  "name":"TROUILLE"
}, { 
  "y":24,
  "name":"BEARN"
}]
var data = [],
    json = [{
    "name": "libelle",
        "data": ["TROUILLE", "BEARN"]
}, {
    "name": "Nombre",
        "data": [12, 24]
}];

$.each(json[1].data, function(i, e) { //loop over "Nombre"
    data.push({
        y: e,
        name: json[0].data[i]
    });
});

$('#container').highcharts({
    plotOptions: {
        pie: {
            dataLabels: {
                enabled: true,
                formatter: function () {
                    return '<b>' + this.key + '</b>: ' + Highcharts.numberFormat(this.percentage, 2) + ' %';
                }
            }
        }
    },
    series: [{
        type: 'pie',
        name: 'Browser share',
        data: data
    }]
});