Étiquettes d'axe Y de Highcharts de format

J'utilise Highcharts pour générer un tableau de lignes qui montre les valeurs de la devise. Par défaut, les étiquettes de l'axe y utilisent des préfixes de métriques pour l'abréviation, par exemple 3k est affiché au lieu de 3000

Je voudrais préciser un symbole monétaire à ces étiquettes, par exemple afficher 3k $ au lieu de 3k. Cependant, dès que j'ajoute le symbole monétaire, les préfixes de métriques ne sont plus utilisés. J'ai essayé ce qui suit

yAxis: { labels: { formatter: function () { return '$' + this.value; } } } 

Et a également essayé

  yAxis: { labels: { format: '${value}' } } 

Mais dans les deux cas, 3000 $ sont affichés au lieu de 3k $. Est-il possible d'ajouter un symbole monétaire sans perdre le préfixe métrique?

Voici une démonstration JSFiddle qui illustre le problème

Vous pouvez appeler le formateur original de votre fonction de formatage:

 $(function () { $('#container').highcharts({ yAxis: { labels: { formatter: function () { return '$' + this.axis.defaultLabelFormatter.call(this); } } }, series: [{ data: [15000, 20000, 30000] }] }); }); 

http://jsfiddle.net/x6b0onkp/2/

J'ai regardé dans le code source HighCharts et j'ai découvert que si vous passez un format ou un formatter il n'ajoutera pas de symbole numérique. Il en est else if déclaration, c'est-à-dire formatOption xor numericSymbol. Vous devez donc ajouter un formateur et faire la logique vous-même.

Il s'agit d'une copie légèrement modifiée de leur code:

  formatter: function() { var ret, numericSymbols = ['k', 'M', 'G', 'T', 'P', 'E'], i = numericSymbols.length; if(this.value >=1000) { while (i-- && ret === undefined) { multi = Math.pow(1000, i + 1); if (this.value >= multi && numericSymbols[i] !== null) { ret = (this.value / multi) + numericSymbols[i]; } } } return '$' + (ret ? ret : this.value); } 

http://jsfiddle.net/x6b0onkp/1/