Highcharts |自定义plotOptions-> series-> dataLabels

时间:2016-08-05 08:00:05

标签: javascript arrays highcharts

我试图用HighChart做一个非常具体的图表,我希望我会清楚。 我举个例子,我对每个国家都有这样的投票:

  • 法国2是/ 1否

  • 英格兰1是/ 0否

我必须在plotOptions-> series-> dataLabels中显示如下信息:

  • 法国是:2票数/ 66%因为法国共有3票

  • 法国否:1票/ 33%

  • 英格兰是:1票/ 100%因为我们对英格兰总共有1票?

  • 英格兰号:0票/ 0%

在Php / Symfony 3 / Javascript中,我做了类似的事情:

$ob->plotOptions->series(
            array(
                'dataLabels' => array(
                    'enabled' => true,
                    'formatter' => new Expr('function () {
                            return this.y + "<br/>(" + Math.round(((this.y / '.$numberOfResultsByCountry.') * 100) * 100) / 100 + " %)"
                        }')
                )
            )
        );

它有效,但是计算结果是错误的,$ numberOfResultsByCountry改变了我的国家的功能,对于法国,值为3,对于英格兰,值为1。

如何为每个结果自定义dataLabels?我检查了doc(http://api.highcharts.com/highcharts#plotOptions.series.dataLabels),看来plotOptions-&gt; series-&gt; dataLabels在这里不接受数组。所以我不知道该怎么做。

我希望我能清楚地解释我的问题。

TY

1 个答案:

答案 0 :(得分:1)

我认为您可以将总票数添加为“总票数”。参数,然后使用this.point.total查找此参数。

$(function() {
  $('#container').highcharts({
    xAxis: {
      type: 'category'
    },
    series: [{
      type: 'column',
      keys: ['x', 'y', 'total'],
      data: [
        [0, 3, 5],
        [1, 1, 4],
        [2, 3, 3],
        [3, 0, 4]
      ],
      dataLabels: {
        enabled: true,
        formatter: function() {
          return this.y + "<br/>(" + Math.round(((this.y / this.point.total) * 100) * 100) / 100 + " %)"
        }
      }
    }]
  });
});

我正在使用键为我的积分添加新参数。您可以在此处找到有关此参数的信息:http://api.highcharts.com/highcharts#plotOptions.series.keys

在这里您可以找到一个如何工作的示例: http://jsfiddle.net/m28ob7r7/

此致