MPAndroidChart,如何删除小数百分比而不显示低于 10 的百分比?

MPAndroidChart, how to remove decimal percentages and not show percentages below 10?

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

版本更新 3.0.0+

格式化值现在通过扩展 ValueFormatter class 并覆盖格式化所需的方法来完成。这也是可以插入自定义逻辑(例如,仅显示大于 10 的值的标签)的地方。

class MyValueFormatter : ValueFormatter() {
    private val format = DecimalFormat("###,##0.0")

    // override this for e.g. LineChart or ScatterChart
    override fun getPointLabel(entry: Entry?): String {
        return format.format(entry?.y)
    }
}

可以在 new documentation.

中找到更多示例和详细说明

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

setData()方法中:

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

这是 DecimalRemover class:

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

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

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

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);
        }
    }

}

第二步: 在你的 activity 设置 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);

这样,我们就可以去掉饼图数据中的小数点了。