android - Achartengine XYMultipleSeriesRenderer renderes chart for null values and shows undesired spacing b/.w bars -


image screen shot  belowi have developed bar chart using chart engine, , have used multiple series showing different colored bars on basis of customisation done on data.

but when there null value 1 bar , xymultiseriesrenderer still renders chart , creates undesired spaces between bars.

private void openchart(){             //int[] x = { 0,1,2,3,4,5,6,7,8,9};             int[] income = { 230,220,230,250,270,300,280,350,370,400};             int[] expense = {220, 270, 290, 280, 260, 300, 330, 340};              int[] colors = {color.green,color.yellow , color.red , color.blue};              xyseries[] incomeseries = addincomeseriestodataset(income);             xyseries expenseseries = constructexpenseseries(expense);             // creating dataset hold each series             xymultipleseriesdataset dataset = new xymultipleseriesdataset();             // adding income series dataset             for(int i= 0 ; i< incomeseries.length ; i++) {                 dataset.addseries(incomeseries[i]);             }             //adding expense series dataset             dataset.addseries(expenseseries);              // creating xymultipleseriesrenderer customize whole chart             xymultipleseriesrenderer multirenderer = buildrenderer(colors);               // creating intent plot bar chart using dataset , multiplerenderer             intent intent = chartfactory.getbarchartintent(getbasecontext(), dataset, multirenderer,       type.default);       // start activity             startactivity(intent);          }private xyseries[] addincomeseriestodataset(int[] income){             xyseries[] incomeseries = {new xyseries("income<=250") , new xyseries("income<320") , new       xyseries("income>320")};             // adding data income series             int = 0;             int sizex = mmonth.length;             int incomeitemscount = income.length;              while(i<sizex && i<incomeitemscount){                 if(income[i] <= 250) {                     incomeseries[0].add(i, income[i]);                                 } else if(income[i] <= 320) {                      incomeseries[1].add(i, income[i]);                  } else {                  incomeseries[2].add(i, income[i]);                 }                i++;             }             return incomeseries;         }          private xyseries constructexpenseseries(int[] expense) {             xyseries expenseseries = new xyseries("expense");                int i=0;                int sizex = mmonth.length;                int expenseitemscount = expense.length;                while(i<sizex && i< expenseitemscount) {                     expenseseries.add(i,expense[i]);                     i++;                 }               return expenseseries;          }         private xymultipleseriesrenderer buildrenderer(int[] colors) {             xymultipleseriesrenderer renderer = new xymultipleseriesrenderer();             renderer.setaxistitletextsize(16);             renderer.setcharttitletextsize(20);             renderer.setlabelstextsize(15);             renderer.setlegendtextsize(15);             renderer.setxlabels(0);             renderer.setaxescolor(color.blue);              renderer.setxlabelscolor(color.blue);             renderer.setylabelscolor(0,color.blue);              renderer.setxlabelsalign(align.center);             renderer.setcharttitle("income vs expense chart");             renderer.setxtitle("year 2012");             renderer.setylabelsalign(align.right);             renderer.setlabelscolor(color.blue);             renderer.setytitle("amount in dollars");             renderer.setbarspacing(1.0);             renderer.setmarginscolor(color.white);             renderer.setapplybackgroundcolor(true);             renderer.setbackgroundcolor(color.white);             renderer.setmargins(new int[] { 20, 30, 15, 0 });             renderer.setzoombuttonsvisible(true);             for(int i=0; i< mmonth.length ;i++){                 renderer.addxtextlabel(i, mmonth[i]);             }             int length = colors.length;             (int = 0; < length; i++) {                 xyseriesrenderer r = new xyseriesrenderer();                 r.setcolor(colors[i]);                 r.setlinewidth(4);                 r.setfillpoints(true);                 r.setdisplaychartvalues(true);                 renderer.addseriesrenderer(r);             }             return renderer; 

you have setbarspacing(1.0) call in code. remove that.


Comments

Popular posts from this blog

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -