Gunaseelan
Gunaseelan

Reputation: 15515

Bar chart using achartengine with each category as separately

See the barchart in image friends.

enter image description here

this is my problem. It shows like all categories in first place itself. I want each category as separately. Which means Salary in first place, Pocket Money in second place, Travel in third place and Entertainment in fourth place.

My code is as follows.

XYMultipleSeriesRenderer renderer = getBarDemoRenderer();
        setChartSettings(renderer);
        layout.removeAllViews();
        layout.addView(ChartFactory.getBarChartView(this, getBarDemoDataset(),
                renderer, Type.DEFAULT));

and

    public XYMultipleSeriesRenderer getBarDemoRenderer() {
    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();     
    renderer.setAxisTitleTextSize(16);      
    renderer.setLabelsTextSize(15);
    renderer.setLegendTextSize(15);
    renderer.setMargins(new int[] {20, 30, 15, 0});    
    SimpleSeriesRenderer r;

    for (int i = 0; i < income_list.size(); i++) {
        r = new SimpleSeriesRenderer();
        r.setColor(color.get(i));
        renderer.addSeriesRenderer(r);
        r.setDisplayChartValues(true);
    }
    return renderer;
}

private void setChartSettings(XYMultipleSeriesRenderer renderer) {
    renderer.setXTitle("Category");
    renderer.setYTitle("Amount");
    renderer.setXAxisMin(0.5);
    renderer.setXAxisMax(4.5);
    renderer.setYAxisMin(0);
    renderer.setYAxisMax(10000);
}

private XYMultipleSeriesDataset getBarDemoDataset() {
    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    for (int i = 0; i < income_list.size(); i++) {
        CategorySeries series = new CategorySeries(cat.get(i));
        series.add(income_list.get(i));
        dataset.addSeries(series.toXYSeries());
    }
    return dataset;
}

Please help me friends. I am trying this still last 6 hours friends. Still I didn't get any idea. using achartengine is more helpful.

Thainks in advance.

Upvotes: 0

Views: 561

Answers (1)

Dan D.
Dan D.

Reputation: 32391

Instead of creating CategorySeries, create XYSeries and add your items this way:

series.add(i + 1, income_list.get(i));

Then, you can just do dataset.addSeries(series); as it is already an XYSeries, you won't have to call toXYSeries().

Upvotes: 2

Related Questions