2

私のアプリは、JFreeChartを使用して重いXYLineCharts(> 180kデータポイント)を生成しています。

各データポイントには、X軸の目盛り値(整数値、自動範囲付き)に使用される連続番号(1から185000)があります。

plot.getDomainAxis().setStandardTickUnits(NumberAxis.createIntegerTickUnits());


これまでのところ、それはうまく機能します。表示されている最初と最後のデータポイントにX軸ラベルを追加したいので、カスタム値を使用してX軸ティックを追加するのは困難です(最初と最後のデータポイントの作成日を表示したいのですが、すでに時系列でソートされています)。

私は検索に数時間を費やしています。それはJFreeChartでは絶対にサポートされていないようです。また、これに対するハックも見つかりませんでした(たとえば、注釈はプロットにのみ配置できます)。

これを解決する方法についてのポインタ/アイデアは大歓迎です!

トーマス

PS:チャートはズームイン/ズームアウトできるため、それに応じてカスタムティックを更新する必要があります。

PS2:目盛りの範囲が自動的に変更されないため、カテゴリ軸を使用することは解決策ではないようです(私は思います)

4

1 に答える 1

2

あなたはNumberFormatOverride

Calendar startDate = Calendar.getInstance();
final String firstDataPointProductionDate = startDate.getTime().toString();
startDate.add(Calendar.DATE, 10);
final String latDataPointProductionDate = startDate.getTime().toString();
axis.setNumberFormatOverride(new NumberFormat(){

    @Override
    public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
        if (number > 0 )
            return new StringBuffer(firstDataPointProductionDate);
        else if ( number < 185000 )
            return new StringBuffer(latDataPointProductionDate);
        else 
            return new StringBuffer(String.format("%9.0f", number));
        }

    @Override
    public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
        return new StringBuffer(String.format("%s", number));
    }

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

必要に応じて日付をフォーマットできます。

于 2012-08-03T09:50:10.520 に答える