Как удалить линии, если значения на круговой диаграмме равны 0 %
Я работаю над круговой диаграммой, для этого я использую библиотеку MPAndroidChart, значения могут содержать 0% для любых данных или более чем для одного, и я отображаю значения вне круговой диаграммы, используя setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE)
, Я не хочу отображать значения 0% на круговой диаграмме, у меня есть решение для этого, чтобы использовать значение в формате.
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) + " %";
}
}
Но если я использую опцию линий, то строка отображается для значений 0% и перекрывается для нескольких значений 0%, так что кто-нибудь может мне помочь удалить опцию линии для значений 0%?
2 ответа
Я изменил метод drawValues
в PieChartRenderer
учебный класс.
Не отображать строку, если значение равно 0.
Просто поставьте одно условие:
if (entry.getValue() != 0.0) {
if (dataSet.getValueLineColor() != ColorTemplate.COLOR_NONE) {
c.drawLine(pt0x, pt0y, pt1x, pt1y, mValueLinePaint);
c.drawLine(pt1x, pt1y, pt2x, pt2y, mValueLinePaint);
}
}
Вместо следующего кода:
if (dataSet.getValueLineColor() != ColorTemplate.COLOR_NONE) {
c.drawLine(pt0x, pt0y, pt1x, pt1y, mValueLinePaint);
c.drawLine(pt1x, pt1y, pt2x, pt2y, mValueLinePaint);
}
Если вы не хотите, чтобы эти линии были нарисованы, вы должны установить цвет этой линии на ColorTemplate.COLOR_NONE
,
Мне не хватает вашего исходного кода, чтобы указать, что именно делать, но на примере https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PieChartActivity.java#L199 вы можете проверить, как это сделать.