MPAndroidChart,如何删除十进制百分比而不显示低于10的百分比?

时间:2015-10-29 20:58:32

标签: android mpandroidchart

我正在使用MPAndroidChart,我有两个问题:

  • MPAndroid饼图删除小数百分比
  • 饼图上未显示值小于10%但显示切片的值;只有文本不应显示小于10%的百分比。

4 个答案:

答案 0 :(得分:9)

这是ValueFormatter的工作。

public class MyValueFormatter implements IValueFormatter {

    private DecimalFormat mFormat;

    public MyValueFormatter() {
        mFormat = new DecimalFormat("###,###,###"); // use no decimals
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {

        // write your logic here
        if(value < 10) return "";

        return mFormat.format(value) + "%"; // in case you want to add percent
    }
}

将格式化程序设置为数据集:

pieDataSet.setValueFormatter(new MyValueFormatter());

此外,禁用转换为百分比:

pieChart.setUsePercentValues(false);

答案 1 :(得分:0)

使用MPAndroidChart的新版本(3.0.0),使用以下方法:

setData()方法中:

 PieData data = new PieData(dataSet);
 data.setValueFormatter(new DecimalRemover(new DecimalFormat("###,###,###")));

这是DecimalRemover类:

public class DecimalRemover extends PercentFormatter {

protected DecimalFormat mFormat;

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

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

ValueFormatter已替换为PercentFormatter

答案 2 :(得分:0)

要删除小数百分比,请轻松使用: PiedataSet.setValueFormatter(new PercentFormatter(new DecimalFormat("###,###,##0")));

答案 3 :(得分:0)

第一步: 请将其放在您的程序包文件夹中的“ PercentFormatter”类下:

public class PercentFormatter extends ValueFormatter {

    public DecimalFormat mFormat;
    private PieChart pieChart;

    public PercentFormatter() {
        mFormat = new DecimalFormat("###,###,##");
    }
    public PercentFormatter(PieChart pieChart) {
        this();
        this.pieChart = pieChart;
    }

    @Override
    public String getFormattedValue(float value) {
        return mFormat.format(value) + " %";
    }

    @Override
    public String getPieLabel(float value, PieEntry pieEntry) {
        if (pieChart != null && pieChart.isUsePercentValuesEnabled()) {
            // Converted to percent
            return getFormattedValue(value);
        } else {
            // raw value, skip percent sign
            return mFormat.format(value);
        }
    }

}

第二步: 在设置Piedata的活动中,以这种方式在PieDataset中添加值格式:

 pieChart = (PieChart) findViewById(R.id.pieChart);
 PieDataSet pieDataSet = new PieDataSet(getData(approved, pending, rejected), "");
 
 pieDataSet.setValueFormatter(new PercentFormatter());
 PieData pieData = new PieData(pieDataSet);
 pieChart.setData(pieData);

这样,我们可以删除Pie数据中的小数点。