2016-03-20 16 views
2

$をデフォルトのy軸ラベルの前に付けたいとします。私の棒グラフは何百万という値を使用しているので、チャートは値-MM(80MM、30MM)を返しています。私がしたいのは、$ -value-MM($ 80MMm $ 30MM)のようにy軸をフォーマットすることです。私は下のコードを試して、それを動作させることができないのですか?これを達成するためのハイチャートのデフォルトのy軸ラベルをカスタマイズする

yAxis: [{ // Primary yAxis 
    labels: { 
     formatter: function() { 
      return '$' + this.value; 
     } 
    }, 
    title: { 
     text: 'Revenue', 
+0

あなたはMM' 'にそれをカスタマイズしたことがありますか?私はそれが万人のために「M」であると期待しますか? –

+0

解決策のいずれかが役に立った場合は、同じ問題に遭遇した人々が簡単に見つけることができるように答えとしてマークしてください。 –

答えて

2

一つではなく、精巧な方法は、数値で軸のために彼らの内部defaultLabelFormatterに使用するコードHighchartsを再利用、および軸フォーマッタでそれを使用することです。

本の例、追加したプレフィックス(JSFiddle)で:

yAxis: { 
    labels: { 
     formatter: function() { 
      var numericSymbols = Highcharts.getOptions().lang.numericSymbols; 
      var i = numericSymbols && numericSymbols.length; 
      var numericSymbolDetector = this.axis.isLog ? this.value : this.axis.tickInterval; 
      var UNDEFINED, ret, multi; 

      while (i-- && ret === UNDEFINED) { 
       multi = Math.pow(1000, i + 1); 
       if (numericSymbolDetector >= multi && (this.value * 10) % multi === 0 && numericSymbols[i] !== null) { 
        ret = Highcharts.numberFormat(this.value/multi, -1) + numericSymbols[i]; 
       } 
      } 

      if (ret === UNDEFINED) { 
       if (Math.abs(this.value) >= 10000) { 
        ret = Highcharts.numberFormat(this.value, -1); 

       } else { 
        ret = Highcharts.numberFormat(this.value, -1, UNDEFINED, ''); 
       } 
      } 

      return "$"+ret; // Adding the prefix 
     } 
    }, 
} 

この実験の短い形式は、それが必要とするコンテキストの要部でdefaultLabelFormatterを呼び出すことであろう。この例(JSFiddle):コンテキストとして

yAxis: { 
    labels: { 
     formatter: function() { 
      return "$" + this.axis.defaultLabelFormatter.call({ 
       axis: this.axis, 
       value: this.value 
      }); 
     } 
    }, 
} 

は、それはあなたの軸がdatetimecategoriesまたは多分対数た場合は期待どおりに動作しないだろうが、数値軸のために働く必要が不完全です。完全な画像のために、私は完全なdefaultLabelFormatterの実装を見てみることをお勧めします。

3

質問が正しく理解されている場合、データには既に 'MM'という接尾辞があり、接頭辞 '$'を追加したいとします。

てみてください、

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

'format'と' formatter'の違いは、後者はHighchartsが値を自動的に最も近い順序に短縮することができるということです。例えば100 000〜100k、1 000 000〜1Mなどですが、フォーマットはそのまま表示されます: –

関連する問題