Highcharts条形图:可以在dataLabels中组合数据点吗?

时间:2013-09-11 20:29:02

标签: javascript jquery highcharts

我有一个Highcharts水平条形图,有两个系列。是否可以将分组的数据点组合到每个数据标签中,以便它们一起出现,例如, 1.00 / 2.3?

CODE:

var labels = [
    'AAA/Aaa',
    'AA+/Aa1',
    'AA/Aa2',
    'AA-/Aa3',
    'A+/A1',
    'A/A2',
    'A-/A3'
];
var theData = [
    {
        name: 'Company 1',
        data: [0.576,7.617,12.101,18.839,18.022,7.644,9.72]
    },
    {
        name: 'Company 2',
        data: [4.123,12.862,14.561,13.754,12.226,11.135,7.51]
    }
];

HIGHCHARTS CONFIG:

$(function () {
    $('#container').highcharts({
        chart: {
            type: 'bar'
        },
        legend: {
            align: 'center',
            layout: 'horizontal',
            verticalAlign: 'bottom'
        },
        plotOptions: {
            series: {
                dataLabels: {
                    enabled: true,
                    formatter: function() {
                        var out = '<span class="col-chart-label">';
                        out +=  this.y + ' / ' + this.y;
                        out += '</span>'
                        return out;
                    },
                    useHTML: true
                }
            }
        },
        series:  theData,
        tooltip: {
            enabled: false
        },
        xAxis: {
            categories: labels,
            labels: {
                formatter: false,
                overflow: 'justify',
                rotation: false
            },
            reversed: true
        }
    });
});

演示在这里: http://jsfiddle.net/dylanmac/RungW/2/

重申一下,每对条形图应该有一个数据标签,顶部条形图作为第一个值,底部条形条形图作为第二个值,用“/”分隔

非常感谢。

1 个答案:

答案 0 :(得分:4)

您可以遍历特定类别的所有系列和总和值,请参阅:http://jsfiddle.net/RungW/3/

                formatter: function() {
                    var out = '<span class="col-chart-label">',
                        series = this.point.series.chart.series,
                        p1 = series[0].yData[this.point.x],
                        p2 = series[1].yData[this.point.x];
                    out +=  this.y + ' / ' + (p1 + p2);
                    out += '</span>'
                    return out;
                },