как удалить линии, если значение равно 0% в круговой диаграмме
Я работаю над круговой диаграммой, для этого я использую библиотеку MPAndroidChart, значения могут содержать 0% для любых данных или более одного, и я отображаю значения вне piechart, используя 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) + " %";
}
}
Но если я использую опцию lines, то линия отображается для 0% значений и перекрывается для нескольких 0% значений, поэтому кто-нибудь может помочь мне удалить опцию line для 0% ценности ?
2 ответа:
Если вы не хотите, чтобы эти линии были нарисованы, вы должны установить цвет этой линии в
ColorTemplate.COLOR_NONE
.Мне не хватает вашего исходного кода, чтобы указать, что именно нужно делать, но на примере https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PieChartActivity.java#L199 Вы можете проверить, как это сделать.
Я изменил метод
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); }