2016-08-05 5 views
1

Ich versuche, eine wirklich spezifische Grafik mit HighChart zu tun, ich hoffe, ich werde klar sein. ich ein Beispiel zu geben, habe ich Stimmen für jedes Land wie folgt aus:Highcharts | Benutzerdefinierte plotOptions-> series-> dataLabels

  • Frankreich 2 Ja/1 Nein

  • England 1 ja/0 No

ich zeigen müssen in plotOptions-> series-> dataLabels die Informationen wie folgt:

  • Frankreich ja : 2 Stimmen/66% Weil wir 3 Stimmen insgesamt für Frankreich

  • Frankreich keine: 1 Stimmen/33%

  • England ja: 1 Stimmen/100% Weil wir für England insgesamt 1 Stimme

  • England no: 0 Stimmen/0%

Php/Symfony 3/Javascript habe ich etwas wie folgt aus:

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

Es funktioniert, aber die Berechnungsart ist falsch, ändern $ numberOfResultsByCountry in Funktion meines Landes, für Frankreich der Wert 3 ist, für England ist der Wert 1.

Wie kann ich die dataLabels für jedes Ergebnis Brauch? Ich habe doc (http://api.highcharts.com/highcharts#plotOptions.series.dataLabels) überprüft und es scheint, dass plotOptions-> series-> dataLabels ein Array hier nicht akzeptiert. Ich habe keine Ahnung, wie ich das machen soll.

Ich hoffe, ich war klar, mein Problem zu erklären.

TY

+0

Ich denke, dass Sie Ihre gesamten Stimmen Zahl als ‚Wert hinzufügen können 'Parameter, und dann finden Sie diesen Parameter mit this.point.value. Schauen Sie sich dieses Beispiel an: http://jsfiddle.net/m28ob7r7/ –

+0

Wow, danke, dass ich nicht wusste, dass ich das tun könnte.Punktwerte wie total. Danke, genau das habe ich gebraucht. Können Sie eine richtige Antwort erstellen, damit ich Ihre Antwort akzeptieren kann? – Aximem

+0

Glücklich zu lesen, dass meine Idee für Sie arbeitete. Ich habe es als Antwort gepostet. –

Antwort

1

Ich denke, dass Sie Ihre gesamte Stimmen Zahl als ‚Gesamt‘ Parameter hinzufügen können, und dann diesen Parameter mit this.point.total finden.

$(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 + " %)" 
     } 
     } 
    }] 
    }); 
}); 

Ich verwende Tasten zum Hinzufügen neuer Parameter zu meinen Punkten. Sie können hier Informationen über diese Parameter finden: http://api.highcharts.com/highcharts#plotOptions.series.keys

Hier können Sie ein Beispiel finden, wie es funktionieren kann: http://jsfiddle.net/m28ob7r7/

Grüße,

+0

Danke Grzegorz;) – Aximem

Verwandte Themen