android - sectores - cómo eliminar líneas si los valores son 0% en el gráfico circular
histograma (2)
Estoy trabajando en un gráfico circular, para eso, estoy usando la biblioteca MPAndroidChart , los valores pueden contener 0% para cualquier dato o más de un dato y estoy mostrando valores fuera de piechart usando setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE)
No quiero mostrar valores de 0% en un gráfico circular, obtuve una solución para que use el valor formateado.
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) + " %";
}
}
Pero si estoy usando la opción de líneas, entonces la línea se muestra para valores de 0% y se superpone para múltiples valores de 0%, así que ¿alguien puede ayudarme a eliminar la opción de línea para valores de 0% ?
si no desea que esas líneas se dibujen, debe establecer el color de esa línea en ColorTemplate.COLOR_NONE
.
No tengo suficiente de su código original para señalar exactamente qué hacer, pero en el ejemplo https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PieChartActivity. java # L199 puede verificar cómo hacerlo.
Cambié el método drawValues
en la clase PieChartRenderer
.
No muestre la línea si el valor es 0.
Solo pon una condición:
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);
}
}
En lugar de seguir el código:
if (dataSet.getValueLineColor() != ColorTemplate.COLOR_NONE) {
c.drawLine(pt0x, pt0y, pt1x, pt1y, mValueLinePaint);
c.drawLine(pt1x, pt1y, pt2x, pt2y, mValueLinePaint);
}