JFreeChart - 确定由于大量的轴范围而导致图表不可见的时刻

时间:2013-01-14 12:41:03

标签: jfreechart

我正在使用JFreeChart库来创建Chart。我需要在同一个图表上显示大量数据。因此我有很多范围轴描述。 不幸的是,当范围轴太多时,图表不再可见。通过调用这些简单的行(其中plot是XYPlot实例)可以使图表可见:

int axises = plot.getRangeAxisCount();
for (int i = 0; i < axises; i++) {
   plot.getRangeAxis(i).setVisible(false);
}

这段代码隐藏了所有RangeAxes。执行该代码后,图表没有范围轴的任何描述,但它是可见的。

但遗憾的是,我无法弄清楚如何在处理时间内确定图表是否可见。

对我来说重要的信息是:

chartPanel.getChartRenderingInfo().getPlotInfo().getDataArea().getWidth()

但不幸的是我在图表上执行了许多操作(例如缩放,移动等),因此我需要每次都有这些信息,当图表的状态发生变化时。每当调用PlotChangeListener接口的plotChanged()方法时,我都无法获取该信息,因为没有绘图(此事件未被触发)。 ChartChangeListener中的chartChanged()方法过早触发 - chartPanel.getChartRenderingInfo()。getPlotInfo()。getDataArea()。getWidth()返回旧值。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以向ChartPanel添加ChartProgressListener

chart.addProgressListener(new ChartProgressListener() {

    @Override
    public void chartProgress(ChartProgressEvent event) {
        System.out.println(event.getType() + " "
            + event.getPercent() + " "
            + chartPanel.getChartRenderingInfo()
                .getPlotInfo().getDataArea().getWidth());
    }
});