在我的应用程序中,我想在饼图上显示一些数据。我正在使用MPAndroidChart库,并且按照文档操作,我编写了一个外观漂亮的图表,正确显示了所有数据。
现在,我想改善图表,但遇到了一些麻烦。我的数据指的是一天,但有两类:收入和收入。直到现在,我还是将它们作为一个PieDataSet
标签处理(它们具有标签,因此很容易区分它们)。现在,我想区分收入和收入,在同一饼图中以不同的颜色显示它们。
我尝试按照此链接(折线图部分)进行调整以使其适合饼图,但是Android Studio告诉我,不能将List<IPieDataSet>
as作为参数用于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);
}
我进行了很多搜索,但仍未找到此问题的答案。
问题:
是否可以在同一饼图上显示多个数据集?如果有可能,我该怎么办?
饼图是一个360度的圆圈,其中切片代表给定数据集总数的百分比。这仅在单个上下文的情况下才有意义IDataSet
。因此,与BarChart
和不同LineChart
,aPieChart
不支持Multiple 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
您只需创建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);
现在,您所有的收入均为红色,支出为蓝色。您甚至可以很聪明地编写一个映射PieEntry
到颜色的函数,而不是手动执行。
无论如何,这里的答案对于设置饼图切片的颜色是正确的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句