Как скрыть нулевые значения в круговой диаграмме - MPChart android

Есть ли способ подавить текст с нулевым значением из диаграммы Android MP (круговая диаграмма)


person Community    schedule 05.10.2015    source источник


Ответы (4)


Как насчет этого?

if(value > 0) dataSet.add(...)
else {
   // do nothing
}

Или напишите свой собственный ValueFormatter для подавления нулей.

person Philipp Jahoda    schedule 05.10.2015
comment
Я сделал то же самое. Есть ли другой вариант в таблице MP - person ; 05.10.2015

Используйте пользовательский форматтер и возвращайте пустую строку, если значение == 0.0f

public class CustomPercentFormatter implements IValueFormatter {

    private DecimalFormat mFormat;

    public CustomPercentFormatter() {
        mFormat = new DecimalFormat("###,###,##0.0");
    }

    public CustomPercentFormatter(DecimalFormat format) {
        this.mFormat = format;
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        if (value == 0.0f)
            return "";
        return mFormat.format(value) + " %";
    }
}

установить форматер:

lineData.setValueFormatter(new CustomPercentFormatter());
person Ali Zarei    schedule 21.03.2017

Вы можете реализовать новый форматтер для MPChart, как заявил Али Зарей в своем ответе. Но вам все еще может понадобиться опция настройки цифр библиотеки, которая уже реализована в DefaultValueFormatter

Для этого вы можете просто создать новый модуль форматирования и расширить его от DefaultValueFormatter и Override к методу getFormattedValue из DefaultValueFormatter и проверить, больше ли значение 0 или нет.

public class NonZeroChartValueFormatter extends DefaultValueFormatter {

    public NonZeroChartValueFormatter(int digits) {
        super(digits);
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex,
                                    ViewPortHandler viewPortHandler) {
        if (value > 0) {
            return mFormat.format(value);
        } else {
            return "";
        }
    }
}
person savepopulation    schedule 02.06.2017
comment
Я столкнулся с похожей проблемой. Я хочу скрыть метки для нулевых значений в круговой диаграмме и по-прежнему хочу сохранить их в легенде. Я переопределяю ValueFormatter, но мне удается скрыть только 0 значений, а не метки. Любые советы? Пожалуйста помоги. - person CristianoYL; 16.06.2017
comment
это решение скроет 0 меток, но 0 значений все равно будут сохранены в виде записи круговой диаграммы. если вы не хотите сохранять его как запись, вам нужно проверить, равно ли значение 0, и не добавлять его как запись. - person savepopulation; 16.06.2017

Разработчики Kotlin:

class MyCustomValueFormatter : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
    return if (value == 0f) {
        ""
    } else {
        value.roundToInt().toString() + " %"
    }
  }
}

и используйте это как

pieData.setValueFormatter(MyCustomValueFormatter())
person Kishan Solanki    schedule 24.07.2021