使用MPAndroidChart饼图显示不同的数据集

时间:2017-01-26 09:37:47

标签: pie-chart mpandroidchart

在我的应用程序中,我想在饼图上显示一些数据。我正在使用MPAndroidChart库并按照文档编写了一个漂亮的图表,并正确显示了我的所有数据。

现在,我想改进我的图表,但我遇到了一些麻烦。我的数据是指一天,但有两类:收入和收入。到目前为止,我已将它们作为单个PieDataSet处理(它们有标签,因此很容易区分它们)。现在我想区分收入和收入,在同一个饼图中用不同的颜色显示它们。

我尝试按照this链接(折线图部分)将其调整为饼图,但Android Studio告诉我,我不能使用List<IPieDataSet>作为参数来构建一个PieData对象。这是代码:

public static void drawPie( List<PieEntry> entriesU, List<PieEntry>entriesE, PieChart chart){
    PieDataSet set = new PieDataSet(entriesU,"uscite");
    PieDataSet set1 = new PieDataSet(entriesE,"entrate");
    List<IPieDataSet> dataSets = new ArrayList<>();
    dataSets.add(set);
    dataSets.add(set1);
    set.setSliceSpace(5);
    set1.setSliceSpace(5);
    PieData data = new PieData(dataSets);
    chart.setData(data);
}

我经常搜索,但我仍然没有找到这个问题的答案。

问题:

可以在同一个饼图上显示多个数据集吗?如果有可能,我该怎么做?

1 个答案:

答案 0 :(得分:1)

饼图是一个360度圆,其中切片表示给定数据集总数的百分比。这仅在单个IDataSet的上下文中有意义。因此,与BarChartLineChart不同,PieChart不支持多个IDataSet

我认为你真正想要的是为你的“收入”和“收入”使用不同的颜色。要做到这一点,您需要做的就是创建一个List<Integer>已解析的颜色(而不是颜色资源),其中列表中的位置与PieEntry添加到图表中的顺序相匹配。

为了说明,我们说我们有:

entries.add(new PieEntry(15f, "entrate1")); //revenue1
entries.add(new PieEntry(20f, "uscite1")); //expense1
entries.add(new PieEntry(10f, "entrate2")); //revenue2
entries.add(new PieEntry(50f, "uscite2")); //expense2

您只需创建与{1}}匹配的已解析颜色:

List<Integer>

现在您的所有收入都是红色,而且您的费用是蓝色的。您甚至可以聪明地编写一个将List<Integer> colors = new ArrayList<Integer>(); colors.add(ContextCompat.getColor(context, R.color.red)); colors.add(ContextCompat.getColor(context, R.color.blue)); colors.add(ContextCompat.getColor(context, R.color.red)); colors.add(ContextCompat.getColor(context, R.color.blue)); dataSet.setColors(colors); 映射到颜色而不是手动执行的功能。

在任何情况下,this answer here都适用于设置饼图切片的颜色。