4

我正在尝试在图表中使用 PeriodAxis 来绘制一些时间序列数据。第一个数据点出现在 2012-01-08 19:00:00,最后一个数据点出现在 2012-01-09 19:00:00。

绘制图表时,刻度标签从 19:29 开始,到 19:29 结束。我希望他们从 19:00 开始并相应地结束——也就是说,我不想要 :29 分钟的分数。我尝试使用 setStandardTickUnits() 将刻度标签增量设置为 1 小时增量,但这并没有改变任何东西。我似乎找不到任何其他方法可以让我更改刻度单位。

在此处输入图像描述

示例代码:

PeriodAxis domain = new PeriodAxis(null, new Hour(19, new Day(8, SerialDate.JANUARY, 2012)),
            new Hour(19, new Day(9, SerialDate.JANUARY, 2012)));
domain.setAutoRangeTimePeriodClass(Hour.class);
PeriodAxisLabelInfo[] periodLabels = new PeriodAxisLabelInfo[2];
periodLabels[0] = new PeriodAxisLabelInfo(Hour.class, new SimpleDateFormat("HH:mm"));   
periodLabels[1] = new PeriodAxisLabelInfo(Day.class, new SimpleDateFormat("MMM dd, yyyy"));
domain.setLabelInfo(periodLabels);

domain.setLowerMargin(0);
domain.setUpperMargin(0);
TickUnits tu = new TickUnits();
tu.add(new DateTickUnit(DateTickUnit.HOUR, 1));

domain.setAutoTickUnitSelection(true);
domain.setStandardTickUnits(tu);
4

1 回答 1

2

在您的情况下,图表从 19:00 开始,tickUnit 为 1 小时。

这里的问题是PeriodAxis将水平轴分为 24 个周期,每个周期由一个org.jfree.data.time.Hour对象表示。然后它会在期间的中间显示一个标签:19:29、20:29...

为了得到你想要的,你可以使用 aDateAxis而不是PeriodAxis,或者使用"hh:00"日期格式,它将用 00 替换分钟。

于 2013-01-11T05:06:51.677 回答