从highcharts中的数组中绘制饼图

时间:2015-09-05 08:46:27

标签: javascript highcharts

我想合并两个数组并在图表上显示它们但不能这样做。请显示绘制该类型图表的正确语法。如果someobdy可以提供一个jsfiddle链接,那么对我的理解会更好。感谢。

$(function () {
    var name = ['chrome','firefox','opera'];
    var data = [11.22,81.54,6];
    var final = [name,data];

    $('#container').highcharts({
        chart: {
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false,
            type: 'pie'
        },
        title: {
            text: 'Browser market shares January, 2015 to May, 2015'
        },
        tooltip: {
            pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                dataLabels: {
                    enabled: true,
                    format: '<b>{point.name}</b>: {point.percentage:.1f} %',
                    style: {
                        color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
                    }
                }
            }
        },
        series: [{
            name: "Results",
            colorByPoint: true,
            data:JSON.parse(final)
        }]
    });
});

1 个答案:

答案 0 :(得分:6)

您不必合并数组。您必须使用对象列表构建新数组。这些对象应该具有基于您提供的数组的结构。每个对象的名称&#34;名称&#34;应该从&#34; name&#34;中得到它的价值。阵列。适当的&#39;反过来应该从&#34;数据&#34;中获得价值。阵列。类似的东西:

var final = [
   {
       name: 'chrome',
       y: '11,22'
   },
   {
       name: 'firefox',
       y: '81.5'
   },
   {
       name: 'opera',
       y: '6'
   }   
]

这就是你如何得到它:

var name = ['chrome','firefox','opera'];
var data = [11.22,81.54,6];
var final = [];

for(var i=0; i < name.length; i++) {
    final.push({
        name: name[i],
        y: data[i]           
    });        
}  

这是小提琴:http://jsfiddle.net/ujahc83h/2/