2

TimeSeriesを使用して Java でデータをグラフ化しようとしていますJFreeChartが、データは への呼び出しの出力である double で構成されていますRenjin。にデータを追加するコードTimeSeriesは次のとおりです。

for (int i=0; i<series2Values.length; i++) {
    if (!Double.isNaN(series2Values[i])) {
        series2.add(new Hour((int)times[i], new Day()), series2Values[i]);
    } else {
        series2.add(new Hour((int)times[i], new Day()), null);
    }
}

final TimeSeriesCollection dataset2 = new TimeSeriesCollection();
dataset2.addSeries(series2);

JFreeChart chart2 = ChartFactory.createTimeSeriesChart(title, "Time (Hour)", "Vehicles Parked", dataset2, true, true, false);
ChartFrame frame2 = new ChartFrame(title, chart2, false);
frame2.pack();
frame2.setIconImage(img.getImage());
frame2.setVisible(true);

問題は、データがグラフ化されるたびに、X 軸の時間が 24 時間制の軍事時間で表示され、time[]配列に重複する値が含まれている場合、次のメッセージSeriesExceptionがスローされることです。

Exception in thread "AWT-EventQueue-0" org.jfree.data.general.SeriesException: You are attempting to add an observation for the time period [6,12/7/2016] but the series already contains an observation for that time period. Duplicates are not permitted.  Try using the addOrUpdate() method.

例外で推奨されているaddOrUpdate()方法は、新しいデータ ポイントを作成するのではなく、12 時間前にその時点の最初のデータ ポイントを上書きするだけです。代わりに、AM と PM が表示された 12 時間形式でデータを表示したいと思います。

でこれを行う便利な方法はありますJFreeChartか、またはコードを変更して、Renjin1 から 24 までの単なる整数ではなく、フォーマットされたものを返すように呼び出した方が便利でしょうか? (例: 既にフォーマットされた時刻文字列)?

ここにクロスポスト。

4

1 に答える 1

2

については詳しくありませんが、エポックからのミリ秒を表す値をRenjin想定すると、Date

  1. 適切なsetDateFormatOverride()軸で使用します。SimpleDateFormat

    axis.setDateFormatOverride(new SimpleDateFormat("hh:mm"));
    
  2. TimeSeries「確実に…各ピリオドがシリーズで最大 1 回出現するようにします。」入力値が正しく変換されている場合、これは意味がありません。

于 2016-07-12T23:24:52.163 に答える