JFreechart:在特定单位后显示带有值的X轴

3

我正在使用jfreechart显示折线图。现在,在X轴上,它显示图表上每个(x,y)对的值。因此,X轴上有大量的值重叠。我想显示一些值,例如每5个单位后或类似的方式。如何使用Jfreechart实现这一点。


请编辑您的问题,包括一个 sscce,展示出问题并显示您已经尝试过的内容。 - trashgod
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接