首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JFreeChart -如何消除TimeSeriesChart中XYBarRenderer之间的空白

JFreeChart -如何消除TimeSeriesChart中XYBarRenderer之间的空白
EN

Stack Overflow用户
提问于 2014-04-09 21:34:15
回答 1查看 653关注 0票数 0

我正在努力消除XYBarRenderer上TimeSeriesChart中各条之间的空白。换句话说,在酒吧的时间之前和之后没有数据的时候,我想扩展这个栏。有可能吗?我非常感谢你的帮助。

这是我的代码:

代码语言:javascript
复制
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;
}

我看到某个地方改变了保证金,所以我试着用:

代码语言:javascript
复制
r.setMargin(-20.0);

但没起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-10 06:23:24

XYBarRenderer依赖于数据集提供确定条形条宽度的值(请参阅getStartXValue()getEndXValue()方法)。它还将宽度缩减了一个称为“边距”的百分比。只有当保证金大于零时才使用,并且您将指定一个类似于0.20 (20%)的数字。默认页边距为0.0。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22974381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档