显示“无数据”消息并防止范围轴标签与组合图表重叠

时间:2013-03-10 22:06:10

标签: jfreechart

之前我曾经使用ChartFactory createTimeseriescreatePieChart静态方法创建默认图表。继续that question后,我编写了以下代码,不再使用这些静态方法。但是在编写以下代码来创建组合绘图图表后,当没有数据可用时,我无法达到类似的结果(即类似于ChartFactory创建的图表)。

此图片显示由ChartFactory创建的显示良好的空时间序列表: enter image description here

此图片是显示不正确的空组合图表(空数据没有消息,域轴的第一个值被截断!): enter image description here

组合图表与数据的重叠和截断标签: enter image description here

这是合并的情节图表代码:

protected CombinedDomainXYPlot createDataset() {
    CombinedDomainXYPlot combinedPlot = new CombinedDomainXYPlot(new DateAxis("Execution Date"));
    TimeSeries tSeries = null;
    XYPlot xyPlot = null;
    XYLineAndShapeRenderer localXYLineAndShapeRenderer = null;
    NumberAxis numberAxis = null;
    for (ChartMetric metric : values.getChartMetrics()) {
        tSeries = new TimeSeries(metric.getFinalDisplayName());
        numberAxis = new NumberAxis(metric.getFinalDisplayName());
        numberAxis.setAutoRangeIncludesZero(false);
        for (Object[] row : values.getChartMetricValue(metric)) {
            Second sec = new Second((Date) row[0]);
            tSeries.add(sec, (Double) row[1]);
        }
        localXYLineAndShapeRenderer = new XYLineAndShapeRenderer(true, false);
        xyPlot = new XYPlot(new TimeSeriesCollection(tSeries), null, numberAxis, localXYLineAndShapeRenderer);
        xyPlot.setNoDataMessage("xy no data message");
        combinedPlot.add(xyPlot);
    }
    combinedPlot.setGap(40.0D);
    return combinedPlot;
}

protected JFreeChart createChart(CombinedDomainXYPlot combinedXYPlot) {
    super.localJFreeChart = new JFreeChart(chartDetails.getTitle(), JFreeChart.DEFAULT_TITLE_FONT, combinedXYPlot, true);
    ChartFactory.getChartTheme().apply(localJFreeChart);
    return chart;
}

夏天来了:

。我需要以良好显示的方式显示一个空的组合域图表,如显示的单个绘图时间序列图表(即第一个图像) 。成功加载组合图表的数据时,我需要范围轴标签不重叠。不幸的是,范围轴的标签有时会非常长。因此,如果我只能相对于子图高度包装标签,我想这样做会。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

  1. 您可以设置一个最初不可见的良好显示的占位数据集,然后在真实数据可用时替换它。

  2. 如果rangeAxis.setVerticalTickLabels(false)无效,那么我不明白这个问题。