Rajesh Durai
Rajesh Durai

Reputation: 11

Android Achartengine Spaces between barchart

past 6 months i am working in android project,now i need to create graph in android i used achartengine lib,everything is ok,i can able to get the graph in visual,the problem is i cant able to give spaces between bar graph.Can any one plz guide on this.I have posted my code for bar graph here.

protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) {
     XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();

     renderer.setMarginsColor(Color.parseColor("#ffffff"));
     renderer.setXLabelsColor(Color.BLACK);
     renderer.setYLabelsColor(0,Color.BLACK);
     renderer.setPanEnabled(false, false);
     renderer.setZoomEnabled(false, false);

     renderer.setBarWidth(75);
     renderer.setApplyBackgroundColor(true);

     int length = colors.length;
     for (int i = 0; i < length; i++) {
       SimpleSeriesRenderer r = new SimpleSeriesRenderer();
       r.setColor(colors[i]);
      // r.setChartvalueAngle(-90);
    //           r.setChartValuesSpacing(60);
           renderer.addSeriesRenderer(r);
           renderer.setBarSpacing(0.5);
         }
         return renderer;
       }
    protected XYMultipleSeriesDataset buildBarDataset(String[] titles, List<int[]> values) {
         XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
         int length = titles.length;
         for (int i = 0; i < length; i++) {
           CategorySeries series = new CategorySeries(titles[i]);
           int[] v = values.get(i);
           int seriesLength = v.length;
           for (int k = 0; k < seriesLength; k++) {
             series.add(v[k]);
           }
               dataset.addSeries(series.toXYSeries());
         }
         return dataset;
    }
    protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle,String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor,int labelsColor) {
         renderer.setChartTitle(title);
         renderer.setYLabelsAlign(Align.RIGHT);
         renderer.setXTitle(xTitle);
         renderer.setYTitle(yTitle);
         renderer.setXAxisMin(0);
         renderer.setXAxisMax(xMax);
         renderer.setYAxisMin(yMin);
         renderer.setYAxisMax(yMax);
         System.out.println("getting bar width----" +renderer.getBarSpacing());
         renderer.setOrientation(Orientation.HORIZONTAL);
         renderer.setShowLabels(true);
         renderer.setAxesColor(axesColor);
         renderer.setLabelsColor(labelsColor);
         renderer.setPanEnabled(false, false);  
         renderer.setInScroll(false);
         renderer.setZoomEnabled(false);
    }

Upvotes: 0

Views: 1473

Answers (1)

2Dee
2Dee

Reputation: 8629

You can use the setBarSpacing method. Quoting the documentation :

Sets the spacing between bars, in bar charts. Only available for bar charts. This is a coefficient of the bar width. For instance, if you want the spacing to be a half of the bar width, set this value to 0.5.

For example :

renderer.setBarWidth(30);
renderer.setBarSpacing(0.5);

This will produce bars of 30px width and spaces between the bars will be 15px. If I remember correctly, these are pixels and not dp, so you may need to convert dp to px for consistency across multiple screen densities.

I hope this was helpful. Let me know if it works for you ;)

Upvotes: 1

Related Questions