Jquery 如何在海图中引用另一系列中的数据点

Jquery 如何在海图中引用另一系列中的数据点,jquery,highcharts,Jquery,Highcharts,我有一个柱状图,它显示了两个系列,其中包含若干年的数据 Y轴是一个数字 X轴是一年 每个系列(两个)每年都有一列 我想为这些列创建一个数据标签,显示每年两列值(系列值)总和的百分比。为此,我需要引用当前y值和给定类别(年份)中两个y值的总和 我试过这样的方法: series: { dataLabels:{ enabled:true, formatter:functi

我有一个柱状图,它显示了两个系列,其中包含若干年的数据

Y轴是一个数字 X轴是一年

每个系列(两个)每年都有一列

我想为这些列创建一个数据标签,显示每年两列值(系列值)总和的百分比。为此,我需要引用当前y值和给定类别(年份)中两个y值的总和

我试过这样的方法:

          series: {
                dataLabels:{
                    enabled:true,
                    formatter:function() {
                        var pcnt = (this.y / (series[0].y + series[1].y)) * 100;
                        return Highcharts.numberFormat(pcnt) + '%';
                    }
                }
            }
试图在求和时使用序列索引和“this”关键字引用当前列的y值,但这不起作用(图表不显示,控制台注释:

未捕获引用错误:未定义序列

这是我正在进行的工作的一部分

这是我试图为这个图实现的compelte代码的副本

$(function () {


     $('#e_74').highcharts({
        chart: {
            type: 'column'
        },
        credits: {
        enabled: false
        },
        noData: {
            style: {
                fontWeight: 'bold',
                fontSize: '20px'
            }
        },
        title: {
            text: 'Title',
        },
        navigation: {
            buttonOptions:
            {
                enabled: false
            }
        },
        xAxis: {
              categories: [2013]
        },
        yAxis: {
            min: 0,
            title: {
                text: 'Number of facilities'
            }
        },
        tooltip: {
            headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
            pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
                '<td style="padding:0"><b>{point.y:,.0f} </b></td></tr>',
            footerFormat: '</table>',
            shared: true,
            useHTML: true
        },
        plotOptions: {
            column: {
                pointPadding: 0,
                borderWidth: 0
                },
            series: {
dataLabels:{
                        enabled:true,
                        formatter:function() {
                            var pcnt = (this.y / (series[0].y + series[1].y) * 100;
                            return Highcharts.numberFormat(pcnt) + '%';
                        }
                    }
                }
            },
            series: [{showInLegend: true, name: 'With trained staff', data: [350]}, {showInLegend: true, name: 'Without trained staff', data: [500]}]
        });
    });
$(函数(){
$('e#u 74')。高图({
图表:{
类型:“列”
},
学分:{
已启用:false
},
野田:{
风格:{
fontWeight:'粗体',
字体大小:“20px”
}
},
标题:{
文本:“标题”,
},
导航:{
按钮选项:
{
已启用:false
}
},
xAxis:{
类别:[2013]
},
亚克斯:{
分:0,,
标题:{
文本:“设施数量”
}
},
工具提示:{
headerFormat:“{point.key}”,
pointFormat:“{series.name}:”+
“{point.y:,.0f}”,
页脚格式:“”,
分享:是的,
useHTML:true
},
打印选项:{
专栏:{
点填充:0,
边框宽度:0
},
系列:{
数据标签:{
启用:对,
格式化程序:函数(){
var pcnt=(this.y/(series[0].y+series[1].y)*100;
返回高位图表。数字格式(pcnt)+'%';
}
}
}
},
系列:[{showInLegend:true,name:'有经过培训的员工',数据:[350]},{showInLegend:true,name:'没有经过培训的员工',数据:[500]}]
});
});

您可以使用

var chartt = $('#e_74').highcharts();
请参阅。为了防止我遗漏了一些内容,我留下了一个console.log语句,以便您可以查看访问其他数据的内容和方式。作为补充说明,您在格式化程序中也遗漏了一个结束括号:

var pcnt = (this.y / (chartt.series[0].yData + chartt.series[1].yData) * 100);
这是


var pcnt=(this.y/(series[0].y+series[1].y)*100;)缺失这看起来不错,但百分比仍然为零?嗯,看起来有必要解析yData,否则它会将它们视为字符串,然后百分比为零,所以我加入了这个:
var sum=parseInt(chartt.series[1].yData,10)+parseInt(chartt.series[0].yData,10);
并在百分位数计算中使用var总和作为分母-非常感谢您的帮助
        dataLabels:{
                    enabled:true,
                    formatter:function(e) {
                        var ChartX = $('#e_74').highcharts();                            
                        var pcnt = (this.y / (ChartX.series[0].yData[0] + 
                        ChartX.series[1].yData[0]) * 100);
                        return Highcharts.numberFormat(pcnt) + '%';
                    }
                }