Achartengine отображает значения внутри областей серии и горизонтальной легенды

Я пробовал следующее с рендерером по умолчанию

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);

Теперь вышеизложенное производит

введите здесь описание изображения

Что я с нетерпением жду, так это иметь процентные значения, например: 2% внутри области диаграммы, что-то вроде этого

введите здесь описание изображения

Как мне получить процентные значения, которые будут отображаться внутри диаграмм?


person Geoff    schedule 04.04.2018    source источник
comment
Пожалуйста, не задавайте 2 вопроса в 1. Задайте отдельный вопрос по легенде.   -  person Michael    schedule 04.04.2018
comment
@Michael хорошо, но это не будет помечено как дубликат   -  person Geoff    schedule 04.04.2018
comment
Он будет помечен как дубликат только в том случае, если кто-то уже спрашивал, как переместить легенду. (кажется, что они есть)   -  person Michael    schedule 04.04.2018


Ответы (1)


Вы хотите отобразить значения и скрыть ярлыки. Сделайте это так в вашем рендерере:

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

Кроме того, имена ваших серий, вероятно, не должны содержать значения, поэтому измените следующую строку

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

to

series.add(seriesNames[i], portions[i]);
person Michael    schedule 04.04.2018
comment
Спасибо, возможно ли отформатировать показанные значения в процентах, например, если значение равно 2, а общее количество равно 4, то отображается 50%, а не 2. - person Geoff; 04.04.2018
comment
Конечно. Сначала нормализуйте данные до процента (тривиально), а затем используйте этот ответ, чтобы добавить знак процента. - person Michael; 04.04.2018