我正在使用 jfreechart 来显示折线图。现在,在 X 轴上,它显示图表上每个 (x,y) 对的值。因此,X 轴有大量的值重叠。我想显示几个值,例如之后每 5 个单位或类似的东西。这怎么可能使用 Jfreechart。
问问题
5148 次
1 回答
3
在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);
于 2012-06-28T14:13:34.067 回答