在绘制图表图图的 numberAxis
之前,要刷新其刻记。结果为 List
, 其中包括一个 NumberTick
对象, 用于轴的每个刻记 。
通过覆盖函数 numberAxis.refreshTicks
, 您可以控制标记的显示方式和时间 。
例如,在下面的代码中,我得到所有的勾记,然后通过它们循环查找 TickType.MAJOR
。如果一个大勾记的值不能用 5 来调和,它会被一个小勾记替换 。
因此,只有可除以5的数值才用文字标签显示。
XYPlot plot = (XYPlot) chart.getPlot();
NumberAxis myAxis = new NumberAxis(plot.getDomainAxis().getLabel()) {
@Override
public List refreshTicks(Graphics2D g2, AxisState state,
Rectangle2D dataArea, RectangleEdge edge) {
List allTicks = super.refreshTicks(g2, state, dataArea, edge);
List myTicks = new ArrayList();
for (Object tick : allTicks) {
NumberTick numberTick = (NumberTick) tick;
if (TickType.MAJOR.equals(numberTick.getTickType()) &&
(numberTick.getValue() % 5 != 0)) {
myTicks.add(new NumberTick(TickType.MINOR, numberTick.getValue(), "",
numberTick.getTextAnchor(), numberTick.getRotationAnchor(),
numberTick.getAngle()));
continue;
}
myTicks.add(tick);
}
return myTicks;
}
};
plot.setDomainAxis(myAxis);