Reputation: 11
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
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