我正在尝试使用 JFreechart 在 XYBarChart 上显示数据。图表应显示时间点和计数。因此,如果用户选择 1 月 25 日和 3 月 25 日作为范围,图表应以特定间隔显示这些日期之间的数据:
如果用户选择 HOUR,那么我会创建一个从 1 月 25 日到 3 月 10 日的每个小时的集合,以及相应的计数。自然,这是一个相当大的集合。如果用户选择 MONTH,那么用户应该会看到 3 个月(并且集合中只有 3 个条目)。如果用户选择 DAY,那么用户只会看到大约 60 个条目。你看?
当我创建图表(使用下面的代码生成数据集)时,它会“插入”这些值。如果我选择小时,它将按天显示数据,每天之间有许多条(即一天内有 24 个小条)。如果我选择月份,我仍然会得到 2 个月的天数,但我会得到一个覆盖一个月所有天数的大块。如果我选择 DAY,它看起来还不错。
我怎样才能让 jfreecharts 停止插值并绘制一个 1:1 映射到我给它的数据的图表。如果我给它两个 2 个月的条目并给它一个 Month.class 的 RegularTimePeriod,则只显示两个带有两个标签和两个值的条。如果我在几个月的时间里给它 1000 小时,然后用标签和计数显示每个小时,等等......
TimeSeries timeSeries = new TimeSeries(title, "Blah", "blah", clazz);
// clazz is one of Day.class, Month.class, Hour.class
for (final ReportRecord reportRecord : records) {
int count = reportRecord.getCount();
Date start = reportRecord.getDateRange().getStart();
RegularTimePeriod period = null;
switch (type) {
case DAY: period = new Day(start); break;
case MONTH: period = new Month(start); break;
case HOUR: period = new Hour(start); break;
}
timeSeries.add(new TimeSeriesDataItem(period, count));
}
return new TimeSeriesCollection(timeSeries);
谢谢你,乔什