2017-04-07 31 views
0

で何百万人と十億のために正しい数字が表示されていない、私は科学的な数値形式で数十億と数百万値を取得しています、それは、Y軸ははJFreeChart

enter image description here

をあまり読みやすさを持っています私はJfreeChartを使用するような価値を得ることができるように、何らかの方法があります。

enter image description here

それは、百万のためにすべての値の十億ダイナミックなければなりません。 助けていただければ幸いです。

答えて

2

@Haroldo_OKと@trashgodのおかげでヒントが得られ、やっと私は同じ解決策を得ました。それで私は期待した結果を得ています。

final long MILLION = 1000000L; 
    final long BILLION = 1000000000L; 
    final long TRILLION = 1000000000000L; 
    final long THOUSAND = 1000L; 

    NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); 
    rangeAxis.setNumberFormatOverride(new NumberFormat() { 

     @Override 
     public Number parse(String source, ParsePosition parsePosition) { 
      return null; 
     } 

     @Override 
     public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) { 

      String temp = number < THOUSAND ? String.valueOf(number) : 
       number < MILLION ? (int)(number/THOUSAND) + " K" : 
       number < BILLION ? (int)(number/MILLION) + " M" : 
       number < TRILLION ? (int)(number/BILLION) + " B" : 
       (int)(number/TRILLION) + " T"; 
      return new StringBuffer(temp); 
     } 

     @Override 
     public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) { 

      String temp = number < THOUSAND ? String.valueOf(number) : 
       number < MILLION ? (int)(number/THOUSAND) + " K" : 
       number < BILLION ? (int)(number/MILLION) + " M" : 
       number < TRILLION ? (int)(number/BILLION) + " B" : 
       (int)(number/TRILLION) + " T"; 
      return new StringBuffer(temp); 
     } 
    }); 
+0

嬉しいです。また、定数を 'static'とし、数値定数に' _'を使い、共通コードを取り除くことも考えてください。 – trashgod

+0

提案のための@trashgodに感謝します。 – SaviNuclear