2016-08-05 65 views
1

我想用HighChart做一個非常具體的圖,我希望我會清楚。 我舉一個例子,我有每個國家的投票是這樣的:Highcharts |自定義plotOptions->系列 - > dataLabels

  • 法國2名是/ 1否

  • 英格蘭1名是/ 0無

我要展示在plotOptions-> series-> dataLabels中的信息是這樣的:

  • France yes :2票/ 66%,因爲我們總共有3票,法國

  • 法國NO: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每個結果?我檢查了文檔(http://api.highcharts.com/highcharts#plotOptions.series.dataLabels)和似乎plotOptions-> series-> dataLabels在這裏不接受數組。所以我不知道該怎麼做。

我希望我已經清楚地解釋我的問題。

TY

+0

我認爲,你可以增加你的總投票數爲「值'參數,然後使用this.point.value查找此參數。看看這個例子:http://jsfiddle.net/m28ob7r7/ –

+0

哇謝謝,我不知道我可以定製this.point值像總。感謝這正是我需要的。你能否創建一個正確的答案,以便我可以接受你的答案? – 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