で何百万人と十億のために正しい数字が表示されていない、私は科学的な数値形式で数十億と数百万値を取得しています、それは、Y軸ははJFreeChart
をあまり読みやすさを持っています私はJfreeChartを使用するような価値を得ることができるように、何らかの方法があります。
それは、百万のためにすべての値の十億ダイナミックなければなりません。 助けていただければ幸いです。
で何百万人と十億のために正しい数字が表示されていない、私は科学的な数値形式で数十億と数百万値を取得しています、それは、Y軸ははJFreeChart
をあまり読みやすさを持っています私はJfreeChartを使用するような価値を得ることができるように、何らかの方法があります。
それは、百万のためにすべての値の十億ダイナミックなければなりません。 助けていただければ幸いです。
@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);
}
});
this other postが示すように、独自のカスタムTickUnitsを作成することもできます。
hereのように、NumberAxis
のプロットでsetNumberFormatOverride()
を呼び出してください。おそらくhereまたはhereと表示されている方法のいずれかを使用して、カスタムNumberFormat
が必要になります。
嬉しいです。また、定数を 'static'とし、数値定数に' _'を使い、共通コードを取り除くことも考えてください。 – trashgod
提案のための@trashgodに感謝します。 – SaviNuclear