2016-08-05 4 views
1

Я пытаюсь сделать действительно конкретный график с HighChart, надеюсь, я буду ясно. Я приведу пример, у меня есть голоса для каждой страны, как это:Highcharts | Custom plotOptions-> series-> dataLabels

  • France 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-> series-> dataLabels не принимает массив здесь. Поэтому я понятия не имею, как это сделать.

Надеюсь, я поняла, что объяснила свою проблему.

TY

+0

Я думаю, что вы можете добавить общее количество голосов, как «значение ', а затем найдите этот параметр, используя this.point.value. Посмотрите на этот пример: http://jsfiddle.net/m28ob7r7/ –

+0

Ничего себе, спасибо, что я не знал, что могу использовать такие значения this.point, как total. Спасибо, это именно то, что мне нужно. Можете ли вы создать правильный ответ, чтобы я мог принять ваш ответ? – Aximem

+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/

С уважением,

+0

Спасибо Grzegorz;) – Aximem

Смежные вопросы