0

I have tried the following with the default renderer

CategorySeries series = new CategorySeries("First test");
int numSlide = portions.length;
for (int i = 0; i < numSlide; i++){
    series.add(seriesNames[i]+" ("+portions[i]+" %)", portions[i]);
}
DefaultRenderer defaultRenderer = new DefaultRenderer();
SimpleSeriesRenderer simpleSeriesRenderer = null;

for (int i = 0; i < numSlide; i++){
    simpleSeriesRenderer = new SimpleSeriesRenderer();
    simpleSeriesRenderer.setColor(colors[i]);
    simpleSeriesRenderer.setChartValuesFormat(new DecimalFormat("###,###,##0.0"));
    defaultRenderer.addSeriesRenderer(simpleSeriesRenderer);
}

defaultRenderer.setInScroll(true);
defaultRenderer.setZoomButtonsVisible(false);
defaultRenderer.setZoomEnabled(true);
defaultRenderer.setLabelsTextSize(18); //value size
defaultRenderer.setLabelsColor(R.color.primary_dark);
defaultRenderer.setShowLegend(false);
defaultRenderer.setClickEnabled(true);
defaultRenderer.setPanEnabled(true);
defaultRenderer.setShowLabels(true);
defaultRenderer.setShowLegend(true);

//return the pie chart view
return ChartFactory.getPieChartView(context, series, defaultRenderer);

Now the above produces

enter image description here

What am looking forward to get is to have the percentage values eg: 2% inside the chart area something which looks like this

enter image description here

How do i get the percentage values to be displayed inside the charts?

Michael
  • 41,989
  • 11
  • 82
  • 128
Geoff
  • 6,277
  • 23
  • 87
  • 197
  • Please don't ask 2 questions in 1. Ask a separate question regarding the legend. – Michael Apr 04 '18 at 09:14
  • @Michael ok but wont that be marked as duplicate – Geoff Apr 04 '18 at 09:19
  • It will only be marked as a duplicate if someone has already asked how to move the legend. ([seems that they have](https://stackoverflow.com/questions/7546990/achartengine-legend-location)) – Michael Apr 04 '18 at 09:24

1 Answers1

1

You want to display values and hide labels. Do that like so in your renderer:

defaultRenderer.setShowLabels(false);
defaultRenderer.setDisplayValues(true);

Also, your series names should probably not contain the values, so change the following line

series.add(seriesNames[i]+" ("+portions[i]+" %)", portions[i]);

to

series.add(seriesNames[i], portions[i]);
Michael
  • 41,989
  • 11
  • 82
  • 128
  • Thanks is it possible to format the values shown to be a percentage, eg if the value is 2 and totals are 4 thats 50% displayed not 2 being displayed – Geoff Apr 04 '18 at 09:33
  • Sure. First normalise the data to a percentage (trivial) and then use [this answer](https://stackoverflow.com/a/47293148/1898563) to append a percentage sign. – Michael Apr 04 '18 at 09:39