0

我正在尝试消除 TimeSeriesChart 中 XYBarRenderer 上的条形之间的间隙。也就是说,我想在bar的前后都没有数据的时候展开bar的时间。是否可以?我将非常感谢您的帮助。

这是我的代码:

protected JFreeChart criarChart(XYDataset dataset){
    JFreeChart chart;

    chart = ChartFactory.createTimeSeriesChart(
            this.getTitulo(), //titulo
            this.getEixoX(), //nome do eixo-x
            this.getEixoY(), //nome do eixo-y
            dataset, //dados
            true, //criar legenda?
            true, //criar tooltips?
            false); //criar URLs?

    chart.setBackgroundPaint(Color.white);

    XYPlot plot = (XYPlot) chart.getPlot();
    plot.setOrientation(PlotOrientation.VERTICAL);
    plot.setBackgroundPaint(Color.lightGray);
    plot.setDomainGridlinePaint(Color.white);
    plot.setRangeGridlinePaint(Color.white);
    plot.setDomainCrosshairVisible(true);
    plot.setRangeCrosshairVisible(true);
    plot.getRenderer().setSeriesPaint(0, Color.red);

    plot.setRenderer(new ClusteredXYBarRenderer() {
                @Override
                public Paint getItemPaint(int series, int item) {
                    XYDataset dataset = getPlot().getDataset();
                    if (dataset.getYValue(series, item) >= 0.0) {
                        return Color.green;
                    }
                    else {
                        return Color.red;
                    }
                }
            }
    );
    XYItemRenderer renderer = plot.getRenderer();
    if(renderer instanceof XYBarRenderer){
        XYBarRenderer r = (XYBarRenderer)renderer;
        r.setBarPainter(new StandardXYBarPainter());
        r.setMargin(-20.0);
        r.setShadowVisible(false);
    }
    //mostra o tooltip das barras do grafico
    plot.getRenderer().setBaseToolTipGenerator(new StandardXYToolTipGenerator(
    StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
    new SimpleDateFormat("HH:mm"), new DecimalFormat("#0")));

    DateAxis axis = (DateAxis) plot.getDomainAxis();
    axis.setDateFormatOverride(new SimpleDateFormat("HH:mm"));

    return chart;
}

我在某个地方看到了更改边距,所以我尝试使用:

r.setMargin(-20.0);

但没有用。

4

1 回答 1

2

XYBarRenderer依赖于数据集来提供确定条形宽度的值(请参阅getStartXValue ()getEndXValue()方法)。它还按称为“边距”的百分比修剪宽度。仅当它大于零时才使用边距,您可以指定一个像 0.20(百分之二十)这样的数字。默认边距为 0.0。

于 2014-04-10T06:23:24.410 回答