Search code examples
androidandroidplot

androidplot setBarWidth


this is my first question in SO:

I'm using Androidplot 0.6.0 in an Android app. I'm displaying a bar chart of six months (a bar per month), at this point everything is well, the trouble is the bar's width (very thin), I would like make the bars wider for better appearance. I have tried the following:

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
}

The result always is the same for whatever value in setBarWidth().

Thanks in advance.


Solution

  • Try this

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

    Update

    Try this, make ur formatter and renderer.

    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);
            }
        }
    

    Now

    MyBarRenderer renderer = ((MyBarRenderer) plot.getRenderer(MyBarRenderer.class));
        renderer.setBarWidthStyle(BarRenderer.BarWidthStyle.FIXED_WIDTH);
        renderer.setBarWidth(20);