0

这是我在 SO 中的第一个问题:

我在 Android 应用程序中使用 Androidplot 0.6.0。我正在显示六个月的条形图(每月一个条形图),此时一切都很好,问题是条形图的宽度(非常薄),我想让条形图更宽以获得更好的外观。我尝试了以下方法:

XYSeries series1 = new SimpleXYSeries(Arrays.asList(domain), Arrays.asList(range), "Title");
BarFormatter series1Format = new BarFormatter(Color.argb(255,0,0,100), Color.LTGRAY);
plot.addSeries(series1, series1Format);

//plot.addSeries(series1, BarRenderer.class, series1Format); //Not in version 0.6.0 
//BarRenderer barRenderer = (BarRenderer) plot.getRenderer(BarRenderer.class); //This return null
BarRenderer barRenderer = new BarRenderer(plot);
if(barRenderer != null) {
   barRenderer.setBarWidthStyle(BarRenderer.BarWidthStyle.FIXED_WIDTH);
   barRenderer.setBarWidth(100); //This don't take effect
}

对于 setBarWidth() 中的任何值,结果总是相同的。

提前致谢。

4

3 回答 3

2

尝试这个

 BarRenderer renderer = (BarRenderer) plot.getRenderer(BarRenderer.class);
    renderer.setBarWidth(20);

更新

试试这个,制作你的格式化程序和渲染器。

class MyBarFormatter extends BarFormatter {
        public MyBarFormatter(int fillColor, int borderColor) {
            super(fillColor, borderColor);
        }

        @Override
        public Class<? extends SeriesRenderer> getRendererClass() {
            return MyBarRenderer.class;
        }

        @Override
        public SeriesRenderer getRendererInstance(XYPlot plot) {
            return new MyBarRenderer(plot);
        }
    }

    class MyBarRenderer extends BarRenderer<MyBarFormatter> {

        public MyBarRenderer(XYPlot plot) {
            super(plot);
        }

        protected MyBarFormatter getFormatter(int index, XYSeries series) {
            return getFormatter(series);
        }
    }

现在

MyBarRenderer renderer = ((MyBarRenderer) plot.getRenderer(MyBarRenderer.class));
    renderer.setBarWidthStyle(BarRenderer.BarWidthStyle.FIXED_WIDTH);
    renderer.setBarWidth(20);
于 2014-02-14T13:17:52.017 回答
0

除了 keshav 的回答,如果您只想缩小条形之间的差距,您可以使用:

// get the renderer
MyBarRenderer renderer = ((MyBarRenderer) plot.getRenderer(MyBarRenderer.class));

// can only set the bar gap if bar width style is VARIABLE_WIDTH
renderer.setBarWidthStyle(BarRenderer.BarWidthStyle.VARIABLE_WIDTH);

// mind the gap
renderer.setBarGap(0f);
于 2014-08-14T20:01:33.283 回答
0

为了缩小差距,我使用以下代码:

BarRenderer renderer = barPlot.getRenderer(BarRenderer.class);
renderer.setBarGroupWidth(BarRenderer.BarGroupWidthMode.FIXED_GAP,1);
于 2017-02-04T01:22:11.010 回答