【问题标题】:MPAndroidChart, how to remove decimal percentages and not show percentages below 10?MPAndroidChart,如何删除小数百分比而不显示低于 10 的百分比?
【发布时间】:2015-10-29 20:58:32
【问题描述】:

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

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

【问题讨论】:

    标签: android mpandroidchart


    【解决方案1】:

    3.0.0+ 版更新

    现在通过扩展ValueFormatter 类并覆盖格式化所需的方法来完成格式化值。这也是可以插入自定义逻辑(例如,仅显示大于 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找到。

    【讨论】:

    • 现在在 MPAndroidChart 3.0.0 中已弃用
    • 如何同时拥有价值和百分比?
    • IValueFormatter 已被弃用还有其他方法吗?
    【解决方案2】:

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

    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

    【讨论】:

    • getFormattedValue 现已弃用
    • @NikosHidalgo 您能否使用当前支持此功能的方法更新答案。
    【解决方案3】:

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

    【讨论】:

    • PercentFormatter 需要 PieChart 作为参数,而不是 DecimalFormat
    【解决方案4】:

    第一步: 请把它放在你的包文件夹中的“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 数据中的小数点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      相关资源
      最近更新 更多