如何使用Mikephil饼图

时间:2017-02-01 11:58:29

标签: android mpandroidchart

这是整数

的静态值
  private int upload=14, bill=15, unbill=85, total=100, unupload=12, sign=10, unsign=90, print=12, unprint=88;

设置饼图条目

ArrayList<Entry> entries = new ArrayList<>();

entries.add(new Entry(bill, 0));
entries.add(new Entry(unbill, 1));
entries.add(new Entry(print, 2));
entries.add(new Entry(unprint, 3));
entries.add(new Entry(sign, 4));
entries.add(new Entry(unsign, 5));
entries.add(new Entry(upload, 6));
entries.add(new Entry(unupload, 7));

 int colors[] ={Color.rgb(84, 139, 221), Color.rgb(251, 249, 146),Color.rgb(151, 212, 153), Color.rgb(183, 144, 189),Color.rgb(226, 148, 188),Color.rgb(208, 189, 121),Color.rgb(185, 147, 134),Color.rgb(206, 139, 130)};

我在这里使用Mikephil PieChart,下面我在数据集中添加了条目。

PieDataSet dataset = new PieDataSet(entries, "Graph");
dataset.setColors(colors);
dataset.setSliceSpace(3f);

我收到了这个输出。所以我想删除我在image

中提到的小数位数

输出很完美。我只想要没有小数位的输出。我怎么能这样做?

6 个答案:

答案 0 :(得分:0)

问题基本上与this one相同,后者已经有了很好的答案。 This relevant question也有图书馆作者的规范答案。提出问题是很好的,但将来你可以通过事先研究它们来确保它们尚未被问到,从而避免对你的问题进行投票。

绝对不需要将库添加为.jar文件,并按照之前的低质量答案编辑库代码。这恰好击败了使用库和使用Gradle等构建工具的整个目的。

根据上面链接的重复内容的确切内容,编写一个实现IValueFormatter的类,如下所示:

public class IntValueFormatter implements IValueFormatter {

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        return String.valueOf((int) value);
    }
}

然后你就这样消费它:

pieDataSet.setValueFormatter(new IntValueFormatter());

答案 1 :(得分:0)

您需要创建自定义的percentFormatter来格式化图表上的百分比表示。

public class Remover extends PercentFormatter {

private DecimalFormat mDecimalFormat;

public Remover (DecimalFormat format) {
    this.mDecimalFormat = format;
}

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

return   "% " + mDecimalFormat.format(value) ;
 }
}

然后,您可以通过调用图表对象上的setValueFormatter()将此格式化程序分配给图表。

答案 2 :(得分:0)

将ValueFormatter设置如下

  pieData.setValueFormatter(new ValueFormatter() {
            @Override
            public String getFormattedValue(float value) {
                return String.valueOf((int) Math.floor(value));
            }
        });

答案 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中添加值格式:

 pieDataSet.setValueFormatter(new PercentFormatter());
 PieData pieData = new PieData(pieDataSet);
 pieChart.setData(pieData);

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

答案 4 :(得分:0)

return String.valueOf(Math.floor(value)).replace(".0","") 这对我有用

答案 5 :(得分:-1)

如果可以输入整数值作为参数,或者如果库方法不接受整数值,则必须自定义库!