Jquery Highcharts-增加一个类名,以便piechart切片可以在style.css中唯一地设置样式

Jquery Highcharts-增加一个类名,以便piechart切片可以在style.css中唯一地设置样式,jquery,highcharts,Jquery,Highcharts,我正在创建一个HighCharts饼图,并希望对每个切片进行更精细的样式控制——我希望浅色切片具有深色数据标签,反之亦然 因此,我希望能够使用style.css文件设置切片的样式。我在dataLabels设置中插入了一个类名(slice),外加一个自定义函数,用于循环遍历我的所有切片,并为它们提供唯一的类: function colorSlices(chart) { var count = 1; $(".slice").each(f

我正在创建一个HighCharts饼图,并希望对每个切片进行更精细的样式控制——我希望浅色切片具有深色数据标签,反之亦然

因此,我希望能够使用style.css文件设置切片的样式。我在dataLabels设置中插入了一个类名(slice),外加一个自定义函数,用于循环遍历我的所有切片,并为它们提供唯一的类:

function colorSlices(chart) {
                var count = 1;
                $(".slice").each(function(){
                    $(this).addClass("slice-"+count);
                    count++;
                });
};

var chart;
    $(document).ready(function() {

        // Build the chart
        chart = new Highcharts.Chart({
            credits: { enabled: false },
            chart: {
                renderTo: 'container',
                exporting: { enabled: false },                
                events: {
                    redraw: function(event) {
                        colorSlices();
                    }
                },
                plotBackgroundColor: null,
                plotBorderWidth: null,
                plotShadow: false,
                shadow: true
                    },
            tooltip: {
                pointFormat: '',
                percentageDecimals: 1
            },
            legend: {
            useHTML: true,
            align: 'right',
            verticalAlign: 'middle',
            itemWidth: 260,
            borderColor: '#fff',
            width: 260,
            labelFormatter: function() {
                return '<div class="legend-item">' + this.name +'</div>';
                }
            },
            title: {
                text: ""
            },
            plotOptions: {
                pie: {
                    allowPointSelect: true,
                    size:'100%',
                    cursor: 'pointer',
                    showInLegend: true,
                    shadow: true,
                    dataLabels: {
                        enabled: true,
                        distance: -40,
                        useHTML: true,
                        style: {
                                width: '100px'
                                },
                        color: '#fff',
                        connectorColor: '#000000',
                        formatter: function() {
                            return '<span class="slice">' + Highcharts.numberFormat(this.percentage,1,".",",") +' %</span>';
                        }
                    }
                }
            },
            series: [{
                type: 'pie',
                 name: 'Income Investments',
                data: [
                    ['Other Industries',     19.3],
                    ['Media',   16.0],                                   
                    ['Materials',   13.6],
                    ['Software & Services', 10.2],
                    ['Retailing',    7.9],
                    ['Capital Goods',     6.5],
                    ['Healthcare Equipment & Services',     6.0],
                    ['Insurance',     5.7],
                    ['Technology Hardware & Equipment',     5.4],
                    ['Consumer Services',     4.8],
                    ['Telecommunication Services',     4.7]                    
                ]
            }],

        colors: [
                    '#132f55',
                    '#4d6d8a',
                    '#7f95aa',
                    '#b2bfcb',
                    '#d1dae2',
                    '#e5eaef',
                    '#7f7f7f',
                    '#9e9e9e',
                    '#c9c9c9',
                    '#bcbdc0',
                    '#eeefef'
                      ]
});


    })
函数颜色切片(图表){
var计数=1;
$(“.slice”).each(函数(){
$(this.addClass(“切片-”+计数);
计数++;
});
};
var图;
$(文档).ready(函数(){
//绘制图表
图表=新的高点图表。图表({
信用证:{已启用:错误},
图表:{
renderTo:'容器',
正在导出:{enabled:false},
活动:{
重画:函数(事件){
彩色切片();
}
},
plotBackgroundColor:null,
plotBorderWidth:null,
影子:错,
影子:对
},
工具提示:{
点格式:“”,
百分比小数:1
},
图例:{
是的,
对齐:“右”,
垂直排列:'中间',
项目宽度:260,
边框颜色:“#fff”,
宽度:260,
labelFormatter:function(){
返回“”+this.name+“”;
}
},
标题:{
案文:“”
},
打印选项:{
馅饼:{
allowPointSelect:true,
大小:'100%',
光标:“指针”,
showInLegend:是的,
影子:没错,
数据标签:{
启用:对,
距离:-40,
是的,
风格:{
宽度:“100px”
},
颜色:“#fff”,
连接器颜色:'#000000',
格式化程序:函数(){
返回“”+Highcharts.numberFormat(此.percentage,1、“.”、“、”+“%”);
}
}
}
},
系列:[{
键入“pie”,
名称:“收入投资”,
数据:[
[“其他行业”,19.3],
[“媒体”,16.0],
[“材料”,13.6],
[《软件与服务》,10.2],
[Retailing',7.9],
[“资本货物”,6.5],
[《医疗设备与服务》,6.0],
[“保险”,5.7],
[“技术硬件和设备”,5.4],
[“消费者服务”,4.8],
[“电信服务”,4.7]
]
}],
颜色:[
"132f55",,
"4d6d8a",,
"7f95aa",,
"b2bfcb",,
#d12",,
"e5eaef",,
"7f7f7f",,
#9e9e9e",,
"c9c9c9",,
"bcbdc0",,
"eeefef"
]
});
})
我最终希望饼图中的每个部分都有增量类,如: -切片-1 -切片-2 -切片-3

我已经开始工作了,但只有当图表调整大小时。我试图在load事件中触发我的自定义函数,但什么也没发生

我的小提琴:

设置colorSlices()作为加载函数对我来说很好

您还可以在格式化程序中使用这个.point.x来分配类。我相信这将完成同样的事情,并减轻对这些活动的需求

数据标签:{
格式化程序:函数(){
返回“”+
Highcharts.numberFormat(此.percentage,1,“.”,“,”+“%”;
}
}
非常感谢——我自己已经做到了这一点,但是IE8中的效果不起作用,这让我抓狂。我注意到在我的重画事件之后,我丢失了“加载:彩色切片”。现在工作完美了!
events: {
    redraw: function(event) {
        colorSlices();
    },
    load: colorSlices
}
dataLabels: {
    formatter: function() {
        return '<span class="slice slice-'+(this.point.x+1)+'">' + 
        Highcharts.numberFormat(this.percentage,1,".",",") +' %</span>';
    }
}