顯示爲百萬千萬正確的數字雖然使用的JFreeChart生成柱狀圖,我得到十億美元,數以百萬計的科學數字格式值,即具有較少的可讀性,Y軸是不是JFreeChart的
有任何方法,以便我可以像使用JfreeChart一樣獲得價值。
它是動態的,以300萬,所有價值數十億美元。 任何幫助將不勝感激。
顯示爲百萬千萬正確的數字雖然使用的JFreeChart生成柱狀圖,我得到十億美元,數以百萬計的科學數字格式值,即具有較少的可讀性,Y軸是不是JFreeChart的
有任何方法,以便我可以像使用JfreeChart一樣獲得價值。
它是動態的,以300萬,所有價值數十億美元。 任何幫助將不勝感激。
感謝@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);
}
});
也許你可以創建自己的自定義TickUnits,因爲this other post暗示。
在您的情節的NumberAxis
上使用調用setNumberFormatOverride()
,如here所示。您需要自定義NumberFormat
,可能使用here或here所示的方法之一。
很高興你的工作;也考慮製作常量'static',在數字常量中使用'_',並分解出常用的代碼。 – trashgod
感謝@trashgod的建議。 – SaviNuclear