2017-04-07 57 views
0

显示为百万千万正确的数字虽然使用的JFreeChart生成柱状图,我得到十亿美元,数以百万计的科学数字格式值,即具有较少的可读性,Y轴是不是JFreeChart的

enter image description here

有任何方法,以便我可以像使用JfreeChart一样获得价值。

enter image description here

它是动态的,以300万,所有价值数十亿美元。 任何帮助将不胜感激。

回答

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